Language: C++

#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define lint long long
using namespace std;
int readint() {
	char c = getchar_unlocked();
	int ans = 0;
	while ('0' <= c && c <= '9') {
		ans = ans * 10 + c - '0';
		c = getchar_unlocked();
	}
	return ans;
}
lint readlint() {
	char c = getchar_unlocked();
	lint ans = 0;
	while ('0' <= c && c <= '9') {
		ans = ans * 10 + c - '0';
		c = getchar_unlocked();
	}
	return ans;
}
char ch[1024];
void writeint(int& x) {
	int ptr = 0;
	while (x) {
		ch[ptr++] = (x % 10) + '0';
		x /= 10;
	}
	while (ptr) {
		putchar_unlocked(ch[--ptr]);
	}
	putchar_unlocked(' ');
}
int q;
constexpr int mod=1000000007;
lint x,y,a,n,m;
constexpr lint f[]={0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025,20365011074,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,956722026041,1548008755920,2504730781961,4052739537881,6557470319842,10610209857723,17167680177565,27777890035288,44945570212853,72723460248141,117669030460994,190392490709135,308061521170129,498454011879264,806515533049393,1304969544928657,2111485077978050,3416454622906707,5527939700884757,8944394323791464,14472334024676221,23416728348467685,37889062373143906,61305790721611591,99194853094755497,160500643816367088,259695496911122585,420196140727489673,679891637638612258,1100087778366101931};
int main(){
	q=readint();
	rep(i,q){
		x=readlint();y=readlint();
		if(x>y)swap(x,y);
		if(y<=2){
			writeint(1);writeint(y==1?1:x==1?2:4);
			continue;
		}
		rep(j,99){
			if(x<f[j]||y<f[j+1]){
				a=(x==1?2:1);
				rep(k,j-2){
					n=f[j-1]+f[j-3-k]*f[k+2],m=f[j]+f[j-2-k]*f[k+2];
					if(n<=x&&m<=y)a+=(y-m)/n+1;
				}
				if(f[j]<=x){
					a++;
					rep(k,j-2)a+=(x-f[j])/(f[j-2-k]*f[k+2]);
				}
				writeint(j-2);writeint(a%mod);
				break;
			}
		}
	}
}

Compiler output:
a.cc: In function 'int main()':
a.cc:45:34: error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
   45 |                         writeint(1);writeint(y==1?1:x==1?2:4);
      |                                  ^
a.cc:24:20: note:   initializing argument 1 of 'void writeint(int&)'
   24 | void writeint(int& x) {
      |               ~~~~~^
a.cc:45:50: error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
   45 |                         writeint(1);writeint(y==1?1:x==1?2:4);
      |                                              ~~~~^~~~~~~~~~~
a.cc:24:20: note:   initializing argument 1 of 'void writeint(int&)'
   24 | void writeint(int& x) {
      |               ~~~~~^
a.cc:59:43: error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
   59 |                                 writeint(j-2);writeint(a%mod);
      |                                          ~^~
a.cc:24:20: note:   initializing argument 1 of 'void writeint(int&)'
   24 | void writeint(int& x) {
      |               ~~~~~^
a.cc:59:57: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'long long int'
   59 |                                 writeint(j-2);writeint(a%mod);
      |                                                        ~^~~~
a.cc:24:20: note:   initializing argument 1 of 'void writeint(int&)'
   24 | void writeint(int& x) {
      |               ~~~~~^