Pavare Infinită

Time limit: 2.75s Memory limit: 512MB Input: Output:

Tocmai ai achiziționat o curte infinită și acum dorești să o pavezi. Ai primit deja câteva plăci formate din pătrate unitare lipite între ele pe laturi, dar nu ești sigur dacă această curte poate fi pavată cu astfel de plăci.

Dacă nu există nicio posibilitate de a poziționa fiecare placă din cele infinit cate sunt în curte astfel încât acestea să nu se suprapună și fiecare punct să fie acoperit, atunci ar trebui să le returnezi imediat.

De asemenea, îți dorești ca pavarea curții să fie periodică. Asta înseamnă că pavarea trebuie să arate la fel indiferent de placa aleasă ca origine.

Cu alte cuvinte, vom introduce un sistem de coordonate, alegând un pătrat unitar arbitrar ca origine. Să spunem că placa AA se potrivește cu placa BB printr-o translație (x,y)(x, y), dacă pentru orice pătrat unitar a(xa,ya)a(x_a, y_a) care aparține plăcii AA, există un pătrat unitar b(xb,yb)b(x_b, y_b) care aparține plăcii BB, astfel încât xb=xa+x,yb=ya+yx_b = x_a + x, y_b = y_a + y.
O curte este periodică dacă și numai dacă pentru orice pereche de plăci (A,B)(A, B) există o translație (x,y)(x, y) astfel încât AA se potrivește cu BB și, de asemenea, pentrux orice placă există o altă placă cu care se potrivește.

Date de intrare

Pe prima linie a fișierului se va afișa un număr natural TT reprezentând numărul de teste. Pe următoarele linii urmează cele TT teste în ordine.
Forma plăcilor este dată ca un set de pătrate unitare într-un tabel infinit cu linii și coloane numerotate cu numere întregi consecutive.
Prima linie a fiecărui test conține un număr întreg NN — numărul de pătrate unitare care formează forma plăcii.
Următoarele NN linii conțin câte două numere întregi ai,bia_i, b_i — linia și coloana fiecărui pătrat unitar care formează placa. Se garantează că forma este conexă (adică se poate ajunge din orice pătrat în orice alt pătrat mergând doar prin laturi comune).

Date de ieșire

Fișierul de ieșire va conține TT linii, linia ii conținând răspunsul pentru cel de al ii-lea test. Pentru fiecare test, afișați Yes sau No în funcție de posibilitatea sau imposibilitatea de a pava curtea infinită folosind un număr infinit de plăci de forma dată.

Restricții și precizări

  • 1N2 3001 \leq N \leq 2 \ 300.
  • 1S11 0001 \leq S \leq 11 \ 000, unde SS reprezintă suma tuturor NN-urilor din cele TT teste.
# Scor Restricții
1 22 1S1001 \leq S \leq 100, 1N201 \leq N \leq 20
2 21 1S2501 \leq S \leq 250, 1N501 \leq N \leq 50
3 22 1S8501 \leq S \leq 850, 1N1701 \leq N \leq 170
4 8 1S20001 \leq S \leq 2000, 1N4001 \leq N \leq 400
5 16 1S5 0001 \leq S \leq 5 \ 000, 1N1 0001 \leq N \leq 1 \ 000
6 11 Fără restricții adiționale.

Exemple

stdin

3
4 
1 1 
1 2 
2 1 
2 2
4 
1 1 
2 1 
3 1 
3 2
5 
2 1 
2 2 
2 3 
1 3 
3 3

stdout

Yes
Yes
No

Explicație

Mai jos sunt reprezentate două exemple de pavări corecte pentru subtestele 1 și 2 (pe o porțiune finită din curte). Acestea nu sunt singurele soluții posibile.

Mai jos este reprezentată o pavare care nu este periodică și astfel nu este considerată o soluție corectă.

Log in or sign up to be able to send submissions!