스터디 그룹

각 학생의 실력과 아는 알고리즘 집합이 주어질 때, 실력 차이가 D 이하인 학생 집합 중 (합집합 크기 - 교집합 크기) × 학생 수를 최대로 하는 집합을 찾는다.

어려움8비트 연산슬라이딩 윈도우정렬수학아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

신입생 현우는 알고리즘 공부가 정말 재밌다. 이번에는 스터디 그룹을 만들어 더 열심히 공부해 보려고 한다.

사공이 많으면 배가 산으로 가는 법이라, 그룹에 참여하는 학생이 너무 많으면 공부가 지지부진해질까 걱정한 현우는 다음 조건을 내걸었다.

그룹에서 가장 잘하는 학생과 가장 못하는 학생의 실력 차이가 DD 이하여야 한다.

또 그룹의 효율성 EE를 이렇게 정의했다. 그룹원 중 한 명이라도 아는 알고리즘의 수를 UU, 그룹원 모두가 아는 알고리즘의 수를 II, 그룹원의 수를 SS라고 하면

E=(UI)×SE = (U - I) \times S

이다.

현우는 두 조건을 확인하려고 모든 학생의 실력을 수치로 매기고, 중요한 알고리즘 KK개에 대해 각 학생이 어떤 알고리즘을 아는지 모두 조사했다. 조건을 만족하는 학생의 부분집합 중 효율성이 가장 큰 것을 스터디 그룹으로 삼으려 한다.

현우가 만들 스터디 그룹의 효율성은 얼마인가?

입력

첫 줄에 학생의 수 NN, 알고리즘의 수 KK, 실력 차이의 한계 DD가 주어진다. (1N1051 \le N \le 10^5, 1K301 \le K \le 30, 0D1090 \le D \le 10^9)

이어서 학생 NN명의 정보가 두 줄씩 주어진다.

  • 첫 줄에 그 학생이 아는 알고리즘의 수 MM과 그 학생의 실력 dd가 주어진다. (0MK0 \le M \le K, 0d1090 \le d \le 10^9)
  • 둘째 줄에 그 학생이 아는 알고리즘의 번호 AiA_iMM개 주어진다. (1AiK1 \le A_i \le K) 한 줄에 적힌 번호는 서로 다르다. MM이 0이면 이 줄은 비어 있다.

출력

효율성이 가장 높은 그룹의 효율성을 한 줄에 출력한다. 학생 한 명으로 이루어진 그룹은 항상 조건을 만족하므로 답이 음수가 되는 일은 없다.