#include <bits/stdc++.h>
using namespace std;
bool comp(int A, int B)
{
return A-(((A-1)/10)*10)<B-(((B-1)/10)*10);
}
int h[10000001];
int main() {
int area,x1,y1,x2,y2,x3,y3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
area=x1*y1+x2*y2+x3*y3;
int n=floor(sqrt(area)+0.5);
if(fabs(sqrt(area)-n)>1e-5)
{
cout<<"-1";
return 0;
}
if(x1==n)
{
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"A";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
}
else
if(y1==n)
{
int tempo=x1;
x1=y1;
y1=tempo;
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"A";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
}
else
if(x2==n)
{
int tempo=x2;
x2=x1;
x1=tempo;
tempo=y2;
y2=y1;
y1=tempo;
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"B";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
}
else
if(y2==n)
{
int temp=y2;
y2=x2;
x2=temp;
int tempo=x2;
x2=x1;
x1=tempo;
tempo=y2;
y2=y1;
y1=tempo;
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"B";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"A";
for(int i=0;i<y3;i++)
cout<<"C";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"C";
cout<<"\n";
}
}
}
else
if(x3==n)
{
int tempo=x3;
x3=x1;
x1=tempo;
tempo=y3;
y3=y1;
y1=tempo;
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"C";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
}
else
if(y3==n)
{
int temp=y3;
y3=x3;
x3=temp;
int tempo=x3;
x3=x1;
x1=tempo;
tempo=y3;
y3=y1;
y1=tempo;
if(x2==n-y1&&x3==n-y1&&y2+y3==n||x2==n-y1&&y3==n-y1&&y2+x3==n||y2==n-y1&&x3==n-y1&&x2+y3==n||y2==n-y1&&y3==n-y1&&x2+x3==n
||x2==n&&x3==n&&y2+y3==n-y1||y2==n&&x3==n&&x2+y3==n-y1||x2==n&&y3==n&&y2+x3==n-y1||y2==n&&y3==n&&x2+x3==n-y1)
cout<<n<<endl;
else
{
cout<<"-1";
return 0;
}
for(int i=0;i<y1;i++)
{
for(int j=0;j<n;j++)
cout<<"C";
cout<<"\n";
}
if(x2==n-y1&&x3==n-y1&&y2+y3==n)
{
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(x2==n-y1&&y3==n-y1&&y2+x3==n)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(y2==n-y1&&x3==n-y1&&x2+y3==n)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
else
if(y2==n-y1&&y3==n-y1&&x2+x3==n)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<n-y1;j++)
{
for(int i=0;i<y2;i++)
cout<<"B";
for(int i=0;i<y3;i++)
cout<<"A";
cout<<endl;
}
}
if(x2==n&&x3==n&&y2+y3==n-y1)
{
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(x2==n&&y3==n&&y2+x3==n-y1)
{
int temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(y2==n&&x3==n&&x2+y3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
else
if(y2==n&&y3==n&&x2+x3==n-y1)
{
int temp=x2;
x2=y2;
y2=temp;
temp=x3;
x3=y3;
y3=temp;
for(int j=0;j<y2;j++)
{
for(int i=0;i<n;i++)
cout<<"B";
cout<<"\n";
}
for(int j=0;j<y3;j++)
{
for(int i=0;i<n;i++)
cout<<"A";
cout<<"\n";
}
}
}
else
{
cout<<"-1";
return 0;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgY29tcChpbnQgQSwgaW50IEIpCnsKICAgIHJldHVybiBBLSgoKEEtMSkvMTApKjEwKTxCLSgoKEItMSkvMTApKjEwKTsKfQppbnQgaFsxMDAwMDAwMV07CmludCBtYWluKCkgewogICAgaW50IGFyZWEseDEseTEseDIseTIseDMseTM7CiAgICBjaW4+PngxPj55MT4+eDI+PnkyPj54Mz4+eTM7CiAgICBhcmVhPXgxKnkxK3gyKnkyK3gzKnkzOwogICAgaW50IG49Zmxvb3Ioc3FydChhcmVhKSswLjUpOwogICAgaWYoZmFicyhzcXJ0KGFyZWEpLW4pPjFlLTUpCiAgICB7CiAgICAgICAgY291dDw8Ii0xIjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGlmKHgxPT1uKQogICAgewogICAgICAgIGlmKHgyPT1uLXkxJiZ4Mz09bi15MSYmeTIreTM9PW58fHgyPT1uLXkxJiZ5Mz09bi15MSYmeTIreDM9PW58fHkyPT1uLXkxJiZ4Mz09bi15MSYmeDIreTM9PW58fHkyPT1uLXkxJiZ5Mz09bi15MSYmeDIreDM9PW4KICAgICAgICB8fHgyPT1uJiZ4Mz09biYmeTIreTM9PW4teTF8fHkyPT1uJiZ4Mz09biYmeDIreTM9PW4teTF8fHgyPT1uJiZ5Mz09biYmeTIreDM9PW4teTF8fHkyPT1uJiZ5Mz09biYmeDIreDM9PW4teTEpCiAgICAgICAgY291dDw8bjw8ZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgIGNvdXQ8PCItMSI7CiAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0wO2k8eTE7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuO2orKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgIH0KICAgICAgICBpZih4Mj09bi15MSYmeDM9PW4teTEmJnkyK3kzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeDI9PW4teTEmJnkzPT1uLXkxJiZ5Mit4Mz09bikKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4teTEmJngzPT1uLXkxJiZ4Mit5Mz09bikKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4teTEmJnkzPT1uLXkxJiZ4Mit4Mz09bikKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoeDI9PW4mJngzPT1uJiZ5Mit5Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeDI9PW4mJnkzPT1uJiZ5Mit4Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09biYmeDM9PW4mJngyK3kzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uJiZ5Mz09biYmeDIreDM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlCiAgICBpZih5MT09bikKICAgIHsKICAgICAgICBpbnQgdGVtcG89eDE7CiAgICAgICAgeDE9eTE7CiAgICAgICAgeTE9dGVtcG87CiAgICAgICAgaWYoeDI9PW4teTEmJngzPT1uLXkxJiZ5Mit5Mz09bnx8eDI9PW4teTEmJnkzPT1uLXkxJiZ5Mit4Mz09bnx8eTI9PW4teTEmJngzPT1uLXkxJiZ4Mit5Mz09bnx8eTI9PW4teTEmJnkzPT1uLXkxJiZ4Mit4Mz09bgogICAgICAgIHx8eDI9PW4mJngzPT1uJiZ5Mit5Mz09bi15MXx8eTI9PW4mJngzPT1uJiZ4Mit5Mz09bi15MXx8eDI9PW4mJnkzPT1uJiZ5Mit4Mz09bi15MXx8eTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICBjb3V0PDxuPDxlbmRsOwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgY291dDw8Ii0xIjsKICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTx5MTtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG47aisrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgfQogICAgICAgIGlmKHgyPT1uLXkxJiZ4Mz09bi15MSYmeTIreTM9PW4pCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09bi15MSYmeTM9PW4teTEmJnkyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeDM9PW4teTEmJngyK3kzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeTM9PW4teTEmJngyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZih4Mj09biYmeDM9PW4mJnkyK3kzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09biYmeTM9PW4mJnkyK3gzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uJiZ4Mz09biYmeDIreTM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIGlmKHgyPT1uKQogICAgewogICAgICAgIGludCB0ZW1wbz14MjsKICAgICAgICB4Mj14MTsKICAgICAgICB4MT10ZW1wbzsKICAgICAgICB0ZW1wbz15MjsKICAgICAgICB5Mj15MTsKICAgICAgICB5MT10ZW1wbzsKICAgICAgICBpZih4Mj09bi15MSYmeDM9PW4teTEmJnkyK3kzPT1ufHx4Mj09bi15MSYmeTM9PW4teTEmJnkyK3gzPT1ufHx5Mj09bi15MSYmeDM9PW4teTEmJngyK3kzPT1ufHx5Mj09bi15MSYmeTM9PW4teTEmJngyK3gzPT1uCiAgICAgICAgfHx4Mj09biYmeDM9PW4mJnkyK3kzPT1uLXkxfHx5Mj09biYmeDM9PW4mJngyK3kzPT1uLXkxfHx4Mj09biYmeTM9PW4mJnkyK3gzPT1uLXkxfHx5Mj09biYmeTM9PW4mJngyK3gzPT1uLXkxKQogICAgICAgIGNvdXQ8PG48PGVuZGw7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICBjb3V0PDwiLTEiOwogICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPHkxO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bjtqKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICB9CiAgICAgICAgaWYoeDI9PW4teTEmJngzPT1uLXkxJiZ5Mit5Mz09bikKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHgyPT1uLXkxJiZ5Mz09bi15MSYmeTIreDM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uLXkxJiZ4Mz09bi15MSYmeDIreTM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uLXkxJiZ5Mz09bi15MSYmeDIreDM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKHgyPT1uJiZ4Mz09biYmeTIreTM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHgyPT1uJiZ5Mz09biYmeTIreDM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4mJngzPT1uJiZ4Mit5Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09biYmeTM9PW4mJngyK3gzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgaWYoeTI9PW4pCiAgICB7CiAgICAgICAgaW50IHRlbXA9eTI7CiAgICAgICAgeTI9eDI7CiAgICAgICAgeDI9dGVtcDsKICAgICAgICBpbnQgdGVtcG89eDI7CiAgICAgICAgeDI9eDE7CiAgICAgICAgeDE9dGVtcG87CiAgICAgICAgdGVtcG89eTI7CiAgICAgICAgeTI9eTE7CiAgICAgICAgeTE9dGVtcG87CiAgICAgICAgaWYoeDI9PW4teTEmJngzPT1uLXkxJiZ5Mit5Mz09bnx8eDI9PW4teTEmJnkzPT1uLXkxJiZ5Mit4Mz09bnx8eTI9PW4teTEmJngzPT1uLXkxJiZ4Mit5Mz09bnx8eTI9PW4teTEmJnkzPT1uLXkxJiZ4Mit4Mz09bgogICAgICAgIHx8eDI9PW4mJngzPT1uJiZ5Mit5Mz09bi15MXx8eTI9PW4mJngzPT1uJiZ4Mit5Mz09bi15MXx8eDI9PW4mJnkzPT1uJiZ5Mit4Mz09bi15MXx8eTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICBjb3V0PDxuPDxlbmRsOwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgY291dDw8Ii0xIjsKICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTx5MTtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG47aisrKQogICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgfQogICAgICAgIGlmKHgyPT1uLXkxJiZ4Mz09bi15MSYmeTIreTM9PW4pCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09bi15MSYmeTM9PW4teTEmJnkyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeDM9PW4teTEmJngyK3kzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeTM9PW4teTEmJngyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZih4Mj09biYmeDM9PW4mJnkyK3kzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09biYmeTM9PW4mJnkyK3gzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uJiZ4Mz09biYmeDIreTM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkMiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIGlmKHgzPT1uKQogICAgewogICAgICAgIGludCB0ZW1wbz14MzsKICAgICAgICB4Mz14MTsKICAgICAgICB4MT10ZW1wbzsKICAgICAgICB0ZW1wbz15MzsKICAgICAgICB5Mz15MTsKICAgICAgICB5MT10ZW1wbzsKICAgICAgICBpZih4Mj09bi15MSYmeDM9PW4teTEmJnkyK3kzPT1ufHx4Mj09bi15MSYmeTM9PW4teTEmJnkyK3gzPT1ufHx5Mj09bi15MSYmeDM9PW4teTEmJngyK3kzPT1ufHx5Mj09bi15MSYmeTM9PW4teTEmJngyK3gzPT1uCiAgICAgICAgfHx4Mj09biYmeDM9PW4mJnkyK3kzPT1uLXkxfHx5Mj09biYmeDM9PW4mJngyK3kzPT1uLXkxfHx4Mj09biYmeTM9PW4mJnkyK3gzPT1uLXkxfHx5Mj09biYmeTM9PW4mJngyK3gzPT1uLXkxKQogICAgICAgIGNvdXQ8PG48PGVuZGw7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICBjb3V0PDwiLTEiOwogICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPHkxO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bjtqKyspCiAgICAgICAgICAgIGNvdXQ8PCJDIjsKICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICB9CiAgICAgICAgaWYoeDI9PW4teTEmJngzPT1uLXkxJiZ5Mit5Mz09bikKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHgyPT1uLXkxJiZ5Mz09bi15MSYmeTIreDM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uLXkxJiZ4Mz09bi15MSYmeDIreTM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bi15MTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTI7aSsrKQogICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8eTM7aSsrKQogICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uLXkxJiZ5Mz09bi15MSYmeDIreDM9PW4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKHgyPT1uJiZ4Mz09biYmeTIreTM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHgyPT1uJiZ5Mz09biYmeTIreDM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4mJngzPT1uJiZ4Mit5Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09biYmeTM9PW4mJngyK3gzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgaWYoeTM9PW4pCiAgICB7CiAgICAgICAgaW50IHRlbXA9eTM7CiAgICAgICAgeTM9eDM7CiAgICAgICAgeDM9dGVtcDsKICAgICAgICBpbnQgdGVtcG89eDM7CiAgICAgICAgeDM9eDE7CiAgICAgICAgeDE9dGVtcG87CiAgICAgICAgdGVtcG89eTM7CiAgICAgICAgeTM9eTE7CiAgICAgICAgeTE9dGVtcG87CiAgICAgICAgaWYoeDI9PW4teTEmJngzPT1uLXkxJiZ5Mit5Mz09bnx8eDI9PW4teTEmJnkzPT1uLXkxJiZ5Mit4Mz09bnx8eTI9PW4teTEmJngzPT1uLXkxJiZ4Mit5Mz09bnx8eTI9PW4teTEmJnkzPT1uLXkxJiZ4Mit4Mz09bgogICAgICAgIHx8eDI9PW4mJngzPT1uJiZ5Mit5Mz09bi15MXx8eTI9PW4mJngzPT1uJiZ4Mit5Mz09bi15MXx8eDI9PW4mJnkzPT1uJiZ5Mit4Mz09bi15MXx8eTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICBjb3V0PDxuPDxlbmRsOwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgY291dDw8Ii0xIjsKICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTx5MTtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG47aisrKQogICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgfQogICAgICAgIGlmKHgyPT1uLXkxJiZ4Mz09bi15MSYmeTIreTM9PW4pCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09bi15MSYmeTM9PW4teTEmJnkyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeDM9PW4teTEmJngyK3kzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG4teTE7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkyO2krKykKICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPHkzO2krKykKICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih5Mj09bi15MSYmeTM9PW4teTEmJngyK3gzPT1uKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDI7CiAgICAgICAgICAgIHgyPXkyOwogICAgICAgICAgICB5Mj10ZW1wOwogICAgICAgICAgICB0ZW1wPXgzOwogICAgICAgICAgICB4Mz15MzsKICAgICAgICAgICAgeTM9dGVtcDsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajxuLXkxO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MjtpKyspCiAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTx5MztpKyspCiAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZih4Mj09biYmeDM9PW4mJnkyK3kzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkzO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQSI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICBpZih4Mj09biYmeTM9PW4mJnkyK3gzPT1uLXkxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9eDM7CiAgICAgICAgICAgIHgzPXkzOwogICAgICAgICAgICB5Mz10ZW1wOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHkyO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICBjb3V0PDwiQiI7CiAgICAgICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTM7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIGlmKHkyPT1uJiZ4Mz09biYmeDIreTM9PW4teTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdGVtcD14MjsKICAgICAgICAgICAgeDI9eTI7CiAgICAgICAgICAgIHkyPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgaWYoeTI9PW4mJnkzPT1uJiZ4Mit4Mz09bi15MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wPXgyOwogICAgICAgICAgICB4Mj15MjsKICAgICAgICAgICAgeTI9dGVtcDsKICAgICAgICAgICAgdGVtcD14MzsKICAgICAgICAgICAgeDM9eTM7CiAgICAgICAgICAgIHkzPXRlbXA7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eTI7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJCIjsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5MztqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgY291dDw8IkEiOwogICAgICAgICAgICAgICAgY291dDw8IlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBjb3V0PDwiLTEiOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgCn0=