Denna uppgift är interaktiv. Efter att du skrivit ut varje rad måste du tömma utdatabufferten (flush). Du kan använda cout << flush i C++, System.out.flush() i Java och sys.stdout.flush() i Python. Du måste strikt följa instruktionerna i avsnittet Interaktion; annars kan du få bedömningar som fel svar (wrong answer), tidsgräns överskriden (time limit exceeded) eller andra.
Eftersom arbetet i gruvan är hårt och tidskrävande bestämde sig dvärgarna för att söka hjälp med att automatisera några av sina uppgifter. Deras nuvarande uppgift är att klassificera $N$ mineraler (identifierade med nummer från $1$ till $N$) i olika klasser. För att hjälpa till med detta har Dvärgen Arbetaren installerat ett nytt transportband. Dvärgarna kan lägga till prover av mineraler i början av bandet och ta bort dem från dess ände (dvs. ta bort de mineraler som lades till tidigast).
Tyvärr har detta transportband ingen kunskapsbas, så det kan inte identifiera klassen för någon mineral på det. Det har dock en annan användbar funktion: det visar hur många olika klasser av mineraler som för närvarande finns på bandet. Det visar sig att detta är tillräckligt för gruvan, eftersom dvärgarna inte behöver känna till klassen för varje mineral: de behöver bara dela upp mineralerna i högar av samma klass.
Kan du hjälpa dvärgarna att lösa denna uppgift med hjälp av transportbandet?
Interaktion
Mineralernas klasser är fastställda från början och beror inte på vilka frågor som ställs.
Läs först en rad som innehåller ett heltal $N$, antalet mineraler som ska klassificeras. Därefter kan du utföra operationer av följande två typer:
+ id— mineralen med identifierareidläggs till i början av transportbandet.-— mineralen i slutet av transportbandet tas bort. Om bandet är tomt händer ingenting.
Efter varje operation skriver transportbandet ut en rad som innehåller antalet olika klasser som för närvarande finns på det.
För att skriva ut svaret, skriv först ut en rad som innehåller ! följt av $k$, som är antalet olika klasser i gruvan. Skriv sedan ut $k$ rader som var och en beskriver en klass. Varje rad ska innehålla ett tal $c_i$ följt av $c_i$ mineralidentifierare för den klassen. Var och en av de $N$ mineralerna måste förekomma i exakt en klass. Du får skriva ut klasserna och mineralerna inom varje klass i valfri ordning.
Kom ihåg att tömma utdatabufferten (flush) efter varje operation och efter att du skrivit svaret. Kom ihåg att ha mellanslag mellan tal och symbolerna +, -, !. Du måste läsa all data från interaktorn.
Begränsningar
$1 \le N \le 500$, du kan utföra högst $35\,000$ operationer.
Exempel
Indata 1
3 1 2 2 2
Utdata 1
+ 1 + 2 + 3 - ! 2 2 1 3 1 2
Förklaring
I det första exempeltestet är $N = 3$ och klasserna för mineralerna $1, 2, 3$ är $1, 2, 1$ i respektive ordning.
Lokal testning
I avsnittet Files hittar du A.zip som innehåller exempeltester och en grader grader.cpp. För att testa din lösning, kompilera den och skicka sedan testnamnet och din körbara fil till den kompilerade ./grader:
./grader [test] [executable]
Till exempel: ./grader 0b.in ./abc
Exempelgradern garanteras inte bete sig identiskt med den officiella. Ingen av dem är dock adaptiv.