#000430

TheBroj

Dat je n-tocifreni broj i nad njim se redom izvrsavaju m operacija od kojih neke menjanju dati broj. Operacije mogu biti nekog od sledeca 3 tipa:


1 x - obrisati x-tu cifru trenutnog broja (ostale cifre se spajaju i dobija se novi broj koji ima jednu cifru manje)
2 x y - zameniti cife na pozicijama x i y u trenutnom broju
3 - ispisati vrednost trenutnog broja po modulu 10.007

Brojevi x i y iz operacija 1 i 2 ce uvek biti manji ili jednaki od trenutnog broja cifara. Moguće je da u nekom trenutku broj ostane sa vodećim nulama. Vaš zadatak je da simulirate date operacije.


Problem je interaktivne prirode. Drugim rečima, nakon svake učitane komande tipa 3 treba ispisati njeno rešenje. Tek nakon što vaš program ispiše rezultat za taj upit (bio on tačan ili ne) uslediće sledeća komanda.


Obratite pažnju da nakon svakog ispisa 'sperete' (flush-ujete) vaš odgovor. Komande koje trebate korisiti su:
cout.flush() in c++
fflush(stdout) in c
flush(output) in pascal



Input U prvom redu standarnog ulaza nalazi se prirodan broj nad kojim se vrše operacije i koji nema više od 100.000 cifara. U sledećem redu se nalazi prirodan broj m <= 50.000 - broj operacija. U narednih m redova se nalaze operacije u gore opisanom formatu. Operacije se izvršavaju u redosledu datim na ulazu.


Output Na standarnom izlazu ispisati odgovarajuću vrednost za svaku operaciju tipa 3 datu na ulazu. Svaka vrednost treba biti ispisana u posebnom redu (obratiti pažnju da je zadatak interaktivan)



Input:
10234
6
1 1
3
2 2 4
3
1 3
3

Output:
234
432
42




Za gore navedeni primer, vaš program bi trebao na sledeći način da obradi ulaz:
Read: 10234
Read: 6
Read: 1 1
Read: 3
Write: 234
Read: 2 2 4
Read: 3
Write: 432
Read: 1 3
Read: 3
Write: 42
Terminate

Submit solution

Coming later

The grading service will be connected in a later migration step. You can inspect the task and your previous results now.