1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<bits/stdc++.h>
using namespace std;
#define nd second
#define st first
int main(){
int t;
cin>>t;
long long wynik[t];
long long fib[94];
fib[1]=1;
fib[2]=2;
for(int i=3;i<=90;i++){
	fib[i]=fib[i-1]+fib[i-2];
}
for(int i=0;i<t;i++){
	int a,b;
	cin>>a;
	long long tab[a];
	if(a<2){
		tab[1]=0;
	}
	for(int x=0;x<a;x++){
		cin>>tab[x];
	}
	cin>>b;
	long long bat[b];
	if(b<2){
		bat[1]=0;
	}
	for(int x=0;x<b;x++){
		cin>>bat[x];
	}
	for(int x=a-1;x>1;x--){
			tab[x-1]=tab[x-1]+tab[x];
			tab[x-2]=tab[x-2]+tab[x];
	}
	tab[0]=tab[1]*2+tab[0];
	for(int x=b-1;x>1;x--){
			bat[x-1]=bat[x-1]+bat[x];
			bat[x-2]=bat[x-2]+bat[x];
	}
	bat[0]=bat[1]*2+bat[0];
	wynik[i]=bat[0]*tab[0];
}
for(int i=0;i<t;i++){
	bool pocz=false;
	string napis;
	for(int a=90;a>=1;a--){
		if(wynik[i]>=fib[a]){
			wynik[i]=wynik[i]-fib[a];
			pocz=true;
			napis=napis+"1";
		}
		else if(wynik[i]<fib[a]&&pocz==true){
			napis=napis+"0";
		}
	}
	cout<<napis.size()<<" ";
	for(int a=napis.size()-1;a>=0;a--){
		cout<<napis[a]<<" ";
	}
	cout<<endl;
}
return 0;
}