import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;
import std.typecons;
import core.vararg;

auto readInts() {
	return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
	return readInts()[0];
}
auto readLongs() {
	return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
	return readLongs()[0];
}

const real eps = 1e-10;

void main(){
	while(true) {
		auto NQ = readInts();
		auto N = NQ[0];
		auto Q = NQ[1];
		if(N == 0) {
			return;
		}
		auto c = new int[100];
		for(int i; i < N; ++i) {
			foreach(d; readInts().dropOne()) {
				--c[d-1];
			}
		}
		auto ans = zip(c, iota(100).array).sort[0][1];
		if(-c[0] >= Q) {
			writeln(ans+1);
		} else {
			writeln(0);
		}
	}
}