Počet bodov:
Program:  20b

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.