Låssmeden | 프로그래밍의 벗 PivotOJ
PivotOJ

Låssmeden

시간 제한: 1000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2020 — lagerBOJ 20831

문제

Låssmeden Lårs har blivit ansvarig för att dela ut nycklar till låsen i Mattelandet. Landet har NN lås, som numreras 1,2,,N1,2,\ldots,N. Varje invånare har en egen nyckel som öppnar vissa (de som invånaren har rätt att öppna) av låsen i landet.

Varje gång en person flyttar till landet ger Lårs dem en nyckel som består av två tal a,ba,b. Därefter kan personen öppna alla lås med nummer mm som uppfyller ma(modb)m\equiv a \pmod{b} (Här betecknar \equiv kongruens. Två tal x,yx,y sägs vara kongruenta modulo nn, betecknas xy(modn)x\equiv y \pmod{n}, om n(xy)n|(x-y), alltså att xyx-y är jämnt delbart med nn. Detta är samma sak som att xx och yy har samma rest när de delas med nn. I de flesta programmeringsspråk kan det skrivas som att x%n==y%nx\%n==y\%n). När en person flyttar från landet tar Lårs tillbaka deras nyckel. 

Det finns tre typer av händelser som Lårs, i egenskap av låsansvarig, behöver hantera -- svara på frågan om någon invånare kan öppna ett specifikt lås, någon som flyttar till landet och någon som flyttar från landet. Lårs ska på varje fråga om det finns någon invånare som kan öppna ett specifikt lås svara "ja" eller "nej". Från början bor ingen i landet.

입력

Den första raden innehåller två heltal N,QN,Q, antalet lås och antalet händelser (1N,Q21051\leq N,Q \leq 2\cdot 10^5).

Därefter kommer QQ rader som är på någon av följande former:

  • 1x1\enspace x, en fråga om det finns någon invånare som kan öppna lås xx (1xN1\leq x \leq N).
  • 2ab2\enspace a\enspace b, någon flyttar till landet, och får nyckel a,ba,b som fungerar som beskrivet ovan (0a<bN0\leq a < b \leq N).
  • 3ab3\enspace a\enspace b, någon med nyckel a,ba,b flyttar från landet och Lårs tar tillbaka deras nyckel. Det är garanterat att en person med nyckel a,ba,b tidigare flyttat till landet (0a<bN0\leq a < b \leq N).

출력

För varje fråga om någon kan låsa upp ett specifikt lås (första siffran är 1) ska du skriva ut "ja" om låset kan öppnas av någon invånare som just nu bor i landet, eller "nej" om låset inte kan öppnas.

힌트

I det första exemplet finns först ingen nyckel, därför kan inte lås 77 öppnas. Därefter läggs en nyckel till som gör att alla heltal mm som har m1(mod3)m\equiv 1 (\mod 3) öppnar låsen, då kan lås 77 öppnas. Slutligen tas nyckeln bort, då kan inte lås 77 öppnas igen.

I det andra exemplet delas två likadana nycklar ut. När den ena av dem tas in igen kan fortfarande lås 77 öppnas (alla likadana nycklar tas alltså inte in samtidigt).

예제

예제 1

입력
10 5
1 7
2 1 3
1 7
3 1 3
1 7
출력
nej
ja
nej

예제 2

입력
7 7
1 7
2 1 3
1 7
2 1 3
1 7
3 1 3
1 7
출력
nej
ja
ja
ja

예제 3

입력
20 8
2 2 3
2 0 2
1 7
1 8
1 9
3 0 2
1 8
1 5
출력
nej
ja
nej
ja
ja

예제 4

입력
200000 7
1 200000
2 2 3
1 200000
2 0 1
1 200000
3 2 3
1 200000
출력
nej
ja
ja
ja
코드를 제출하려면 로그인하세요.