Na pondelňajší krúžok matematiky nikto okrem vás a učiteľky neprišiel, lebo všetci sú na lyžiarskom zájazde. Učiteľka sa preto rozhodla hodinu spraviť trochu interaktívnejšou, nakoľko sa nemusí venovať desiatim študentom naraz.
Úloha
Na začiatku si učiteľka tajne zvolí dve celé čísla: modulus \(m\) (\(1 \leq m\)) a stav \(x_0\) (\(0 \leq x_0 < m\)). Vašou úlohou je tieto dve čísla uhádnuť pomocou niekoľkých otázok. Učiteľka vám na začiatku oznámi, že modulus je najviac \(n\), a že sa môžete spýtať najviac \(q\) otázok.
Každá otázka vyzerá nasledovne: Vy si zvolíte jedno celé číslo \(a\) (\(1 \leq a \leq n\)). Učiteľka zoberie aktuálny stav \(x_i\) a vypočíta z neho nový stav \(x_{i+1}\) použitím nasledovného vzorca: \(x_{i+1} = (x_i + a) \bmod m\). Vám však nič z toho neukáže. Jediné, čo vám na konci oznámi, je, či je nový stav menší, rovnaký, alebo väčší ako predchádzajúci stav.
Kedykoľvek môžete skúsiť uhádnuť \(m\) a \(x_0\), najneskôr ale po \(q\) otázkach. Môžete hádať iba raz.
Formát vstupu
Na začiatku dostanete celé číslo \(t\): koľkokrát sa s vami bude učiteľka hrať (ak ju v predchádzajúcich hrách nesklamete).
Na začiatku každej hry dostanete celé čísla \(n\) a \(q\). Po každej vašej otázke dostanete na samostatný riadok odpoveď: >
ak sa stav zväčšil, =
ak je rovnaký, a <
ak sa zmenšil.
Formát výstupu
Každú otázku píšte do samostatného riadku, a musí pozostávať z jedného celého čísla \(a\) (\(1 \leq a \leq n\)). Váš tip tiež vypíšte do samostatného riadku v tvare 0 m x0
.
Obmedzenia
Je päť testovacích sád, s nasledujúcimi obmedzeniami:
Sada | \(1\) | \(2\) | \(3\) | \(4\) | \(5\) |
---|---|---|---|---|---|
\(t\) | \(2\,016\) | \(1\,000\) | \(200\) | \(100\) | \(200\) |
\(n\) | \(63\) | \(250\) | \(10\,000\) | \(10^9\) | \(10^{18}\) |
\(q\) | \(126\) | \(251\) | \(2\,300\) | \(2\,600\) | \(1\,200\) |
Poznámky
Nezabudnite po každej vašej otázke alebo tipe flush
-núť výstup, aby sa hneď odoslal testovaču. (cout.flush()
v C++, fflush(stdio)
v C, sys.stdout.flush()
pre Python, a System.out.flush()
v Jave.)
Keď váš program zo vstupu prečíta EOF
(čiže keď sa mu nepodarí načítať nejaký údaj), váš program by mal hneď skončiť. Toto môže nastať napríklad vtedy, keď ste v práve skončenej hre zle odpovedali. Teraz čakáte ďalšie \(n\) a \(q\), na vstupe vám však už žiadne údaje neprídu.
Ak bude váš program naďalej bežať a pokúšať sa komunikovať, môže sa stať, že namiesto WA
dostanete EXC
, TLE
, alebo iné zveriny.
Príklady
Input:
2
2 9
<
>
<
1 9
Output:
1
1
1
0 2 1
0 1 0
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.