바이러스

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

새로운 컴퓨터 바이러스가 발견되어, 이를 치료하는 백신 프로그램을 만들려고 한다. 백신을 만들려면 바이러스 코드를 알아야 하는데, 감염된 프로그램들에 공통으로 들어 있는 부분이 바이러스로 의심되는 부분이다. 각 프로그램의 코드는 양의 정수들의 나열로 표현된다.

바이러스는 탐지를 피하기 위해 자신의 코드를 거꾸로 뒤집어 넣기도 한다. 따라서 어떤 코드와 그 코드를 뒤집은 것은 같은 바이러스 코드로 본다. 예를 들어 한 프로그램에는 A B C D 순서로, 다른 프로그램에는 D C B A 순서로 들어 있어도 같은 코드로 취급한다.

또한 프로그램 코드의 일부가 우연히 같을 수 있으므로, 공통으로 나타나는 코드의 길이가 KK 이상일 때에만 바이러스 코드로 추정한다.

감염된 프로그램 NN개가 주어질 때, 모든 프로그램에 공통으로 (정방향 또는 역방향으로) 나타나며 길이가 KK 이상인 연속된 코드 조각이 존재하는지 판정하는 프로그램을 작성하시오.

입력

첫째 줄에 감염된 프로그램의 개수 NN과 바이러스 코드로 추정하기 위한 최소 길이 KK가 주어진다. (2N1002 \le N \le 100, 4K1,0004 \le K \le 1{,}000)

둘째 줄부터 각 프로그램의 정보가 순서대로 주어진다. 각 프로그램마다 먼저 그 프로그램 코드의 길이 MiM_i가 한 줄에 주어지고, 다음 줄에 프로그램 코드를 이루는 MiM_i개의 양의 정수가 공백으로 구분되어 주어진다. (10Mi1,00010 \le M_i \le 1{,}000, 각 정수는 11 이상 10,00010{,}000 이하)

출력

모든 프로그램에서 바이러스 코드로 추정되는 부분이 존재하면 YES를, 존재하지 않으면 NO를 출력한다.