폭발성 물질

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

문제

에릭은 순도 분석을 위해 물질 nn종의 표본을 실험실로 보내려 한다. 물질에는 1번부터 nn번까지 번호가 붙어 있다. 표본은 용량이 같은 상자 여러 개에 나누어 담는다. 상자 하나가 물질 cc종까지 담을 수 있으면 그 상자의 용량은 cc다.

어떤 물질끼리는 화학 반응으로 폭발을 일으켜서 같은 상자에 담을 수 없다. 에릭은 물질 kka1,,aka_1, \dots, a_k를 한 상자에 담아 폭발이 일어난다면 그중 두 종만 담아도 폭발이 일어난다는 사실을 알아냈다. 그래서 폭발을 일으키는 물질 쌍을 빠짐없이 적어 쌍 mm개짜리 목록을 만들었다.

폭발은 모두 물질 두 종 사이에서 일어나므로, 에릭은 용량이 같은 상자 두 개만으로 물질을 안전하게 보낼 수 있는지 궁금하다. 물질 nn종을 남김없이 두 상자에 나누어 담아야 하고, 한 상자에 든 두 물질이 목록에 있는 쌍이면 안 된다. 보낼 수 있다면 상자 용량의 최솟값은 얼마인가?

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다 (T20T \le 20).

각 테스트 케이스의 첫 줄에는 정수 nnmm이 주어진다 (1n10001 \le n \le 1000, 0mmin(n(n1)/2, 105432)0 \le m \le \min(n(n-1)/2,\ 105432)). nn은 물질의 종류 수, mm은 목록에 있는 쌍의 개수다. 이어지는 mm개 줄에는 각각 정수 aabb가 주어진다 (1a,bn1 \le a, b \le n, aba \ne b). 물질 aa와 물질 bb를 같은 상자에 담으면 폭발이 일어난다는 뜻이다. 같은 쌍이 두 번 주어지지는 않는다.

출력

각 테스트 케이스마다 정수 하나를 한 줄에 출력한다. 상자 두 개로 물질을 보낼 수 없으면 -1을 출력하고, 보낼 수 있으면 상자 용량의 최솟값을 출력한다.