AT_iroha2019_day3_h 〔経験値〕

Description

[problemUrl]: https://atcoder.jp/contests/iroha2019-day3/tasks/iroha2019_day3_h ある英小文字 $ C $ について、英小文字からなる空でない文字列 $ S $ の **$ C $ -経験値**を、次のように定義します。 - $ C $ 以外のある文字が $ S $ に重複して現れる場合、 $ 0 $ - そうでない場合、 $ S $ に $ C $ が現れる回数を $ N $ 回として、 $ (|S|-N)\ \cdot\ 2^{N} $ 例えば、`irohachan`の $ a $ -経験値は $ 0 $ 、`chokudai`の $ z $ -経験値は $ 8 $ 、`experience`の $ e $ -経験値は $ 96 $ です。 いろはちゃんは、あなたに $ Q $ 個の質問をしてきました。 $ i\ (1\ \leq\ i\ \leq\ Q) $ 番目の質問は以下の通りです。 **質問**: $ C_i $ -経験値がちょうど $ E_i $ である、英小文字からなる空でない文字列は存在するか?存在するのであれば、そのうち辞書順で最小のものは何か? これら $ Q $ 個の質問に順に答えてください。

Input Format

入力は以下の形式で与えられる。 > $ Q $ $ C_1\ E_1 $ $ C_2\ E_2 $ $ \vdots $ $ C_Q\ E_Q $

Output Format

$ Q $ 行出力せよ。 $ i\ (1\ \leq\ i\ \leq\ Q) $ 行目には、 $ i $ 番目の質問の答えを、以下に従って出力せよ。 $ C_i $ -経験値が $ E_i $ である、英小文字からなる空でない文字列が存在しない場合は`-1`を、存在する場合は、そのような文字列のうち辞書順で最小のものを出力せよ。 この問題において、条件を満たす文字列が存在する場合、その中で辞書順最小のものは一意に定まることが保証される。

Explanation/Hint

### 制約 - $ Q,\ E_i\ (1\ \leq\ i\ \leq\ Q) $ は整数 - $ C_i\ (1\ \leq\ i\ \leq\ Q) $ は英小文字 - $ 1\ \leq\ Q\ \leq\ 10^{5} $ - $ 0\ \leq\ E_i\ \leq\ 10^{18}\ (1\ \leq\ i\ \leq\ Q) $ ### 解説 [解説](https://img.atcoder.jp/iroha2019-day3/editorial-H.pdf)