시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 1024 MB100491237.500%

문제

서울대학교에서 포켓몬 대회를 연다는 소식에, 많은 사람들이 참가를 신청했다.

대회 참가자들은 포켓몬 대여소를 자유롭게 사용할 수 있다. 포켓몬은 종마다 거래가치가 모두 다르며, 거래가치가 높은 종을 맡기면 그보다 낮은 거래가치를 지닌 종의 포켓몬을 대여할 수 있다.

종은 1번 종부터 17번 종까지 있으며, 종 번호가 높을수록 거래 가치가 높다. 예를 들어, 3번 종은 2번 종보다 거래 가치가 높다.

참가자가 가지고 있는 포켓몬들의 리스트를 그 참가자의 조합이라고 하자. 대회 관람의 재미를 위해서는 최대한 다양한 종의 포켓몬이 나오는 것이 좋기 때문에, 이번 대회에서는 포켓몬 조합은 서로 다른 종의 포켓몬만을 포함해야 한다는 규칙이 있다.

다음 두 조건을 만족할 때 참가자 B의 조합이 참가자 A의 조합의 하위 호환이라고 한다.

  • 참가자 A와 참가자 B가 지닌 포켓몬 수가 같다.
  • 참가자 A가 0번 이상 대여소를 활용하여, 참가자 B가 가진 포켓몬 조합을 만들어낼 수 있다.

대회 구경을 좋아하는 케레는 재미를 위해, 각 참가자가 보유한 포켓몬 조합을 보고 참가자에게 파워 지수를 부여하려고 한다. 참가자 X의 파워 지수는, 전체 참가자 중 조합이 참가자 X의 하위 호환인 사람의 수로 정의한다.

전체 참가자들의 포켓몬 조합이 주어질 때, 각 참가자의 파워 지수를 구하시오.

입력

첫째 줄에 참가자의 수 N이 주어진다. (1 ≤ N ≤ 100 000)

둘째 줄부터 (N + 1)번째 줄까지 참가자가 가지고 있는 포켓몬에 대한 정보가 주어진다.

(i + 1)번째 줄의 첫 번째 정수로 i번째 사람이 보유한 포켓몬 개수 ci가 주어진다. (1 ≤ ci ≤ 17)

이후 공백을 두고 ci개의 정수 pj가 오름차순으로 주어진다. (1 ≤ pj ≤ 17; pj < pj+1)

이는 i번째 사람이 보유한 포켓몬 종 번호를 순서대로 나열한 것이다.

출력

첫째 줄에 총 N개의 정수를 공백으로 구분하여 출력한다. i번째 정수는 i번째 참가자의 파워 지수를 의미한다.

예제 입력 1

4
1 1
1 2
2 1 4
2 2 3

예제 출력 1

1 2 1 1

예제 입력 2

3
1 1
1 1
1 1

예제 출력 2

3 3 3

노트

입력의 2번째 줄의 내용이 3 1 2 4라면, 1번째 참가자는 포켓몬을 3마리 보유하고 있으며, 이는 각각 1번 종, 2번 종, 4번 종 포켓몬임을 의미한다.

출처

University > 서울대학교 > 2022 서울대학교 프로그래밍 경시대회 > Division 2 H번