# Mr. Frog’s Problem

Problem Description
One day, you, a clever boy, feel bored in your math class, and then fall asleep without your control. In your dream, you meet Mr. Frog, an elder man. He has a problem for you.
He gives you two positive integers A and B, and your task is to find all pairs of integers (C, D), such that A≤C≤B,A≤D≤B and AB+BA≤CD+DC

Input
first line contains only one integer T (T≤125), which indicates the number of test cases. Each test case contains two integers A and B (1≤A≤B≤1018).

Output
For each test case, first output one line “Case #x:”, where x is the case number (starting from 1).
Then in a new line, print an integer s indicating the number of pairs you find.
In each of the following s lines, print a pair of integers C and D. pairs should be sorted by C, and then by D in ascending order.

Sample Input

2
10 10
9 27



Sample Output

Case #1:
1
10 10
Case #2:
2
9 27
27 9



Solution

#include <set>
#include <map>
#include <list>
#include <cmath>
#include <stack>
#include <queue>
#include <ctime>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#define ms(a) memset(a,0,sizeof(a))
typedef long long LL;
const LL LINF = LLONG_MAX / 2;
const int INF = INT_MAX / 2;
const int MAXN = 100000 + 10;
const int MOD = 100000;
const double eps = 1e-6;
int gcd(int a, int b)
{
if (!b)return a;
return gcd(b, a%b);
}
using namespace std;
//or2..or2..or2..or2..or2..//
int main()
{
int n, cas = 1; cin >> n;
while (n--)
{
LL a, b; cin >> a >> b;
if (a > b)printf("Case #%d:\n0\n", cas++);
else if (a == b)printf("Case #%d:\n1\n%I64d %I64d\n", cas++, a, b);
else printf("Case #%d:\n2\n%I64d %I64d\n%I64d %I64d\n", cas++, a, b, b, a);
}
return 0;
}