猜猜数?
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有三人 A、B、C,A 手中有两个不同的整数 $x, y$,现在 A 在黑板上分别写下 $x\times y, x+y$ 的值。

由于 A 施展了魔法,使得 B 只能看到 $x\times y$,而 C 只能看到 $x+y$ 
(B 知道 C 知道了 $x+y$ 的值,C 也一样知道 B 知道了 $x\times y$ 的值)

于是进行了以下对话:
A:你们能否得知我手上的两个数$x,y$

B:不能。

C:我也不能。

B:按你这么说的话,那我知道这两个数是什么了。

C:按你这么说的话,那我也知道这两个数是什么了。
给定一个正整数 $n$,代表 A 手中两个数的范围,即 $1 \le x,y \le n$,并且 $B$,$C$两人都知道这个范围,且两人绝顶聪明。

现让你找出所有满足以上对话的数对并输出,若不存在则输出 AHa?

数对是无序的,即 $(1,2)$ 与 $(2,1)$ 看作一个数对。

输入描述:

第一行包含整数 T (1\le T \le 50),表示共有 T 组测试数据。

每组数据包含一个正整数 n (2\le n\le 70)

输出描述:

每组数据输出占一行,输出格式为 c:(x1, y1) (x2,y2) ... , 其中 c 代表满足条件的数对个数,后面为符合条件的每个数对,且数对按照字典序升序排序,并保证 x_i<y_i,以空格隔开。

示例1

输入

复制
2
2
15

输出

复制
AHa?
1:(1,6)