#include<stdio.h>
#include<algorithm>
#include<queue>
using namespace std;
struct wolf{
int depth;
int r[4];
int c[4];
wolf(){}
wolf(int a,int b,int C,int d,int e,int f,int g,int h,int D){
r[0]=a;
c[0]=b;
r[1]=C;
c[1]=d;
r[2]=e;
c[2]=f;
r[3]=g;
c[3]=h;
depth=D;
}
};
bool bfs[8][8][8][8][8][8][8][8];
pair<int,int> p[4];
int main(){
int a,b,c,d,e,f,g,h;
scanf("%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h);
a--;
b--;
c--;
d--;
e--;
f--;
g--;
h--;
p[0]=make_pair(a,b);
p[1]=make_pair(c,d);
p[2]=make_pair(e,f);
p[3]=make_pair(g,h);
std::sort(p,p+4);
queue<wolf>Q;
Q.push(wolf(p[3].first,p[3].second,p[2].first,p[2].second,p[1].first,p[1].second,p[0].first,p[0].second,0));
scanf("%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h);
a--;
b--;
c--;
d--;
e--;
f--;
g--;
h--;
p[0]=make_pair(a,b);
p[1]=make_pair(c,d);
p[2]=make_pair(e,f);
p[3]=make_pair(g,h);
std::sort(p,p+4);
while(Q.size()){
wolf at=Q.front();
Q.pop();
if(at.r[0]<at.r[1]||(at.r[0]==at.r[1]&&at.c[0]<at.c[1])){
int m=at.r[0];
int n=at.c[0];
at.r[0]=at.r[1];
at.r[1]=m;
at.c[0]=at.c[1];
at.c[1]=n;
}
if(at.r[0]<at.r[2]||(at.r[0]==at.r[2]&&at.c[0]<at.c[2])){
int m=at.r[0];
int n=at.c[0];
at.r[0]=at.r[2];
at.r[2]=m;
at.c[0]=at.c[2];
at.c[2]=n;
}
if(at.r[0]<at.r[3]||(at.r[0]==at.r[3]&&at.c[0]<at.c[3])){
int m=at.r[0];
int n=at.c[0];
at.r[0]=at.r[3];
at.r[3]=m;
at.c[0]=at.c[3];
at.c[3]=n;
}
if(at.r[1]<at.r[2]||(at.r[1]==at.r[2]&&at.c[1]<at.c[2])){
int m=at.r[1];
int n=at.c[1];
at.r[1]=at.r[2];
at.r[2]=m;
at.c[1]=at.c[2];
at.c[2]=n;
}
if(at.r[1]<at.r[3]||(at.r[1]==at.r[3]&&at.c[1]<at.c[3])){
int m=at.r[1];
int n=at.c[1];
at.r[1]=at.r[3];
at.r[3]=m;
at.c[1]=at.c[3];
at.c[3]=n;
}
if(at.r[2]<at.r[3]||(at.r[2]==at.r[3]&&at.c[2]<at.c[3])){
int m=at.r[2];
int n=at.c[2];
at.r[2]=at.r[3];
at.r[3]=m;
at.c[2]=at.c[3];
at.c[3]=n;
}
int O=at.depth+1;
if(bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]])continue;
bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]=true;
if(at.depth==8)continue;
// if(at.r[0]==3&&at.c[0]==5&&at.c[1]==5&&at.c[2]==2)printf("%d %d %d %d %d %d %d %d\n",at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3]);
bool k;
bool z;
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[0]-1&&at.c[j]==at.c[0])k=true;
if(at.r[j]==at.r[0]-2&&at.c[j]==at.c[0])z=true;
}
if(!z&&k&&at.r[0]>=2&&!bfs[at.r[0]-2][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0]-2,at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[0]>=1&&!bfs[at.r[0]-1][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0]-1,at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[0]+1&&at.c[j]==at.c[0])k=true;
if(at.r[j]==at.r[0]+2&&at.c[j]==at.c[0])z=true;
}
if(!z&&k&&at.r[0]<6&&!bfs[at.r[0]+2][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0]+2,at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[0]<7&&!bfs[at.r[0]+1][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0]+1,at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[0]-1&&at.r[j]==at.r[0])k=true;
if(at.c[j]==at.c[0]-2&&at.r[j]==at.r[0])z=true;
}
if(!z&&k&&at.c[0]>=2&&!bfs[at.r[0]][at.c[0]-2][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0]-2,at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.c[0]>=1&&!bfs[at.r[0]][at.c[0]-1][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0]-1,at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[0]+1&&at.r[j]==at.r[0])k=true;
if(at.c[j]==at.c[0]+2&&at.r[j]==at.r[0])z=true;
}
if(!z&&k&&at.c[0]<6&&!bfs[at.r[0]][at.c[0]+2][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0]+2,at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.c[0]<7&&!bfs[at.r[0]][at.c[0]+1][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0]+1,at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[1]-1&&at.c[j]==at.c[1])k=true;
if(at.r[j]==at.r[1]-2&&at.c[j]==at.c[1])z=true;
}
if(!z&&k&&at.r[1]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]-2][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1]-2,at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[1]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]-1][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1]-1,at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[1]+1&&at.c[j]==at.c[1])k=true;
if(at.r[j]==at.r[1]+2&&at.c[j]==at.c[1])z=true;
}
if(!z&&k&&at.r[1]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]+2][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1]+2,at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[1]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]+1][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1]+1,at.c[1],at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[1]-1&&at.r[j]==at.r[1])k=true;
if(at.c[j]==at.c[1]-2&&at.r[j]==at.r[1])z=true;
}
if(!z&&k&&at.c[1]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]-2][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1]-2,at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.c[1]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]-1][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1]-1,at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[1]+1&&at.r[j]==at.r[1])k=true;
if(at.c[j]==at.c[1]+2&&at.r[j]==at.r[1])z=true;
}
if(!z&&k&&at.c[1]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]+2][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1]+2,at.r[2],at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.c[1]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]+1][at.r[2]][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1]+1,at.r[2],at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[2]-1&&at.c[j]==at.c[2])k=true;
if(at.r[j]==at.r[2]-2&&at.c[j]==at.c[2])z=true;
}
if(!z&&k&&at.r[2]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]-2][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2]-2,at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[2]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]-1][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2]-1,at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[2]+1&&at.c[j]==at.c[2])k=true;
if(at.r[j]==at.r[2]+2&&at.c[j]==at.c[2])z=true;
}
if(!z&&k&&at.r[2]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]+2][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2]+2,at.c[2],at.r[3],at.c[3],O));
}else if(!k&&at.r[2]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]+1][at.c[2]][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2]+1,at.c[2],at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[2]-1&&at.r[j]==at.r[2])k=true;
if(at.c[j]==at.c[2]-2&&at.r[j]==at.r[2])z=true;
}
if(!z&&k&&at.c[2]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]-2][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2]-2,at.r[3],at.c[3],O));
}else if(!k&&at.c[2]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]-1][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2]-1,at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[2]+1&&at.r[j]==at.r[2])k=true;
if(at.c[j]==at.c[2]+2&&at.r[j]==at.r[2])z=true;
}
if(!z&&k&&at.c[2]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]+2][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2]+2,at.r[3],at.c[3],O));
}else if(!k&&at.c[2]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]+1][at.r[3]][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2]+1,at.r[3],at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[3]-1&&at.c[j]==at.c[3])k=true;
if(at.r[j]==at.r[3]-2&&at.c[j]==at.c[3])z=true;
}
if(!z&&k&&at.r[3]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]-2][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3]-2,at.c[3],O));
}else if(!k&&at.r[3]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]-1][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3]-1,at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.r[j]==at.r[3]+1&&at.c[j]==at.c[3])k=true;
if(at.r[j]==at.r[3]+2&&at.c[j]==at.c[3])z=true;
}
if(!z&&k&&at.r[3]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]+2][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3]+2,at.c[3],O));
}else if(!k&&at.r[3]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]+1][at.c[3]]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3]+1,at.c[3],O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[3]-1&&at.r[j]==at.r[3])k=true;
if(at.c[j]==at.c[3]-2&&at.r[j]==at.r[3])z=true;
}
if(!z&&k&&at.c[3]>=2&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]-2]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3]-2,O));
}else if(!k&&at.c[3]>=1&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]-1]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3]-1,O));
}
k=false;
z=false;
for(int j=0;j<4;j++){
if(at.c[j]==at.c[3]+1&&at.r[j]==at.r[3])k=true;
if(at.c[j]==at.c[3]+2&&at.r[j]==at.r[3])k=true;
}
if(!z&&k&&at.c[3]<6&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]+2]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3]+2,O));
}else if(!k&&at.c[3]<7&&!bfs[at.r[0]][at.c[0]][at.r[1]][at.c[1]][at.r[2]][at.c[2]][at.r[3]][at.c[3]+1]){
Q.push(wolf(at.r[0],at.c[0],at.r[1],at.c[1],at.r[2],at.c[2],at.r[3],at.c[3]+1,O));
}
if(bfs[p[3].first][p[3].second][p[2].first][p[2].second][p[1].first][p[1].second][p[0].first][p[0].second])break;
}
if(bfs[p[3].first][p[3].second][p[2].first][p[2].second][p[1].first][p[1].second][p[0].first][p[0].second])printf("YES\n");
else printf("NO\n");
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxxdWV1ZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IHdvbGZ7CglpbnQgZGVwdGg7CglpbnQgcls0XTsKCWludCBjWzRdOwoJd29sZigpe30KCXdvbGYoaW50IGEsaW50IGIsaW50IEMsaW50IGQsaW50IGUsaW50IGYsaW50IGcsaW50IGgsaW50IEQpewoJCXJbMF09YTsKCQljWzBdPWI7CgkJclsxXT1DOwoJCWNbMV09ZDsKCQlyWzJdPWU7CgkJY1syXT1mOwoJCXJbM109ZzsKCQljWzNdPWg7CgkJZGVwdGg9RDsKCX0KfTsKYm9vbCBiZnNbOF1bOF1bOF1bOF1bOF1bOF1bOF1bOF07CnBhaXI8aW50LGludD4gcFs0XTsKaW50IG1haW4oKXsKCWludCBhLGIsYyxkLGUsZixnLGg7CglzY2FuZigiJWQlZCVkJWQlZCVkJWQlZCIsJmEsJmIsJmMsJmQsJmUsJmYsJmcsJmgpOwoJYS0tOwoJYi0tOwoJYy0tOwoJZC0tOwoJZS0tOwoJZi0tOwoJZy0tOwoJaC0tOwoJcFswXT1tYWtlX3BhaXIoYSxiKTsKCXBbMV09bWFrZV9wYWlyKGMsZCk7CglwWzJdPW1ha2VfcGFpcihlLGYpOwoJcFszXT1tYWtlX3BhaXIoZyxoKTsKCXN0ZDo6c29ydChwLHArNCk7CglxdWV1ZTx3b2xmPlE7CglRLnB1c2god29sZihwWzNdLmZpcnN0LHBbM10uc2Vjb25kLHBbMl0uZmlyc3QscFsyXS5zZWNvbmQscFsxXS5maXJzdCxwWzFdLnNlY29uZCxwWzBdLmZpcnN0LHBbMF0uc2Vjb25kLDApKTsKCXNjYW5mKCIlZCVkJWQlZCVkJWQlZCVkIiwmYSwmYiwmYywmZCwmZSwmZiwmZywmaCk7CglhLS07CgliLS07CgljLS07CglkLS07CgllLS07CglmLS07CglnLS07CgloLS07CglwWzBdPW1ha2VfcGFpcihhLGIpOwoJcFsxXT1tYWtlX3BhaXIoYyxkKTsKCXBbMl09bWFrZV9wYWlyKGUsZik7CglwWzNdPW1ha2VfcGFpcihnLGgpOwoJc3RkOjpzb3J0KHAscCs0KTsKCXdoaWxlKFEuc2l6ZSgpKXsKCQl3b2xmIGF0PVEuZnJvbnQoKTsKCQlRLnBvcCgpOwoJCWlmKGF0LnJbMF08YXQuclsxXXx8KGF0LnJbMF09PWF0LnJbMV0mJmF0LmNbMF08YXQuY1sxXSkpewoJCQlpbnQgbT1hdC5yWzBdOwoJCQlpbnQgbj1hdC5jWzBdOwoJCQlhdC5yWzBdPWF0LnJbMV07CgkJCWF0LnJbMV09bTsKCQkJYXQuY1swXT1hdC5jWzFdOwoJCQlhdC5jWzFdPW47CgkJfQoJCWlmKGF0LnJbMF08YXQuclsyXXx8KGF0LnJbMF09PWF0LnJbMl0mJmF0LmNbMF08YXQuY1syXSkpewoJCQlpbnQgbT1hdC5yWzBdOwoJCQlpbnQgbj1hdC5jWzBdOwoJCQlhdC5yWzBdPWF0LnJbMl07CgkJCWF0LnJbMl09bTsKCQkJYXQuY1swXT1hdC5jWzJdOwoJCQlhdC5jWzJdPW47CgkJfQoJCWlmKGF0LnJbMF08YXQuclszXXx8KGF0LnJbMF09PWF0LnJbM10mJmF0LmNbMF08YXQuY1szXSkpewoJCQlpbnQgbT1hdC5yWzBdOwoJCQlpbnQgbj1hdC5jWzBdOwoJCQlhdC5yWzBdPWF0LnJbM107CgkJCWF0LnJbM109bTsKCQkJYXQuY1swXT1hdC5jWzNdOwoJCQlhdC5jWzNdPW47CgkJfQoJCWlmKGF0LnJbMV08YXQuclsyXXx8KGF0LnJbMV09PWF0LnJbMl0mJmF0LmNbMV08YXQuY1syXSkpewoJCQlpbnQgbT1hdC5yWzFdOwoJCQlpbnQgbj1hdC5jWzFdOwoJCQlhdC5yWzFdPWF0LnJbMl07CgkJCWF0LnJbMl09bTsKCQkJYXQuY1sxXT1hdC5jWzJdOwoJCQlhdC5jWzJdPW47CgkJfQoJCWlmKGF0LnJbMV08YXQuclszXXx8KGF0LnJbMV09PWF0LnJbM10mJmF0LmNbMV08YXQuY1szXSkpewoJCQlpbnQgbT1hdC5yWzFdOwoJCQlpbnQgbj1hdC5jWzFdOwoJCQlhdC5yWzFdPWF0LnJbM107CgkJCWF0LnJbM109bTsKCQkJYXQuY1sxXT1hdC5jWzNdOwoJCQlhdC5jWzNdPW47CgkJfQoJCWlmKGF0LnJbMl08YXQuclszXXx8KGF0LnJbMl09PWF0LnJbM10mJmF0LmNbMl08YXQuY1szXSkpewoJCQlpbnQgbT1hdC5yWzJdOwoJCQlpbnQgbj1hdC5jWzJdOwoJCQlhdC5yWzJdPWF0LnJbM107CgkJCWF0LnJbM109bTsKCQkJYXQuY1syXT1hdC5jWzNdOwoJCQlhdC5jWzNdPW47CgkJfQoJCWludCBPPWF0LmRlcHRoKzE7CgkJaWYoYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKWNvbnRpbnVlOwoJCWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXT10cnVlOwoJCWlmKGF0LmRlcHRoPT04KWNvbnRpbnVlOwoJLy8JaWYoYXQuclswXT09MyYmYXQuY1swXT09NSYmYXQuY1sxXT09NSYmYXQuY1syXT09MilwcmludGYoIiVkICVkICVkICVkICVkICVkICVkICVkXG4iLGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSk7CgkJYm9vbCBrOwoJCWJvb2wgejsKCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LnJbal09PWF0LnJbMF0tMSYmYXQuY1tqXT09YXQuY1swXSlrPXRydWU7CgkJCWlmKGF0LnJbal09PWF0LnJbMF0tMiYmYXQuY1tqXT09YXQuY1swXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5yWzBdPj0yJiYhYmZzW2F0LnJbMF0tMl1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLTIsYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LnJbMF0+PTEmJiFiZnNbYXQuclswXS0xXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0tMSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9CgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5yW2pdPT1hdC5yWzBdKzEmJmF0LmNbal09PWF0LmNbMF0paz10cnVlOwoJCQlpZihhdC5yW2pdPT1hdC5yWzBdKzImJmF0LmNbal09PWF0LmNbMF0pej10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuclswXTw2JiYhYmZzW2F0LnJbMF0rMl1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdKzIsYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LnJbMF08NyYmIWJmc1thdC5yWzBdKzFdW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSsxLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX0KCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LmNbal09PWF0LmNbMF0tMSYmYXQucltqXT09YXQuclswXSlrPXRydWU7CgkJCWlmKGF0LmNbal09PWF0LmNbMF0tMiYmYXQucltqXT09YXQuclswXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5jWzBdPj0yJiYhYmZzW2F0LnJbMF1dW2F0LmNbMF0tMl1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0tMixhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LmNbMF0+PTEmJiFiZnNbYXQuclswXV1bYXQuY1swXS0xXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXS0xLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9CgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5jW2pdPT1hdC5jWzBdKzEmJmF0LnJbal09PWF0LnJbMF0paz10cnVlOwoJCQlpZihhdC5jW2pdPT1hdC5jWzBdKzImJmF0LnJbal09PWF0LnJbMF0pej10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuY1swXTw2JiYhYmZzW2F0LnJbMF1dW2F0LmNbMF0rMl1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0rMixhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LmNbMF08NyYmIWJmc1thdC5yWzBdXVthdC5jWzBdKzFdW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdKzEsYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX0KCgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5yW2pdPT1hdC5yWzFdLTEmJmF0LmNbal09PWF0LmNbMV0paz10cnVlOwoJCQlpZihhdC5yW2pdPT1hdC5yWzFdLTImJmF0LmNbal09PWF0LmNbMV0pej10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuclsxXT49MiYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdLTJdW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0tMixhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX1lbHNlIGlmKCFrJiZhdC5yWzFdPj0xJiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV0tMV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXS0xLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfQoJCWs9ZmFsc2U7CgkJej1mYWxzZTsKCQlmb3IoaW50IGo9MDtqPDQ7aisrKXsKCQkJaWYoYXQucltqXT09YXQuclsxXSsxJiZhdC5jW2pdPT1hdC5jWzFdKWs9dHJ1ZTsKCQkJaWYoYXQucltqXT09YXQuclsxXSsyJiZhdC5jW2pdPT1hdC5jWzFdKXo9dHJ1ZTsKCQl9CgkJaWYoIXomJmsmJmF0LnJbMV08NiYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdKzJdW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0rMixhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX1lbHNlIGlmKCFrJiZhdC5yWzFdPDcmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXSsxXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdKzEsYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9CgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5jW2pdPT1hdC5jWzFdLTEmJmF0LnJbal09PWF0LnJbMV0paz10cnVlOwoJCQlpZihhdC5jW2pdPT1hdC5jWzFdLTImJmF0LnJbal09PWF0LnJbMV0pej10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuY1sxXT49MiYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdLTJdW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXS0yLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX1lbHNlIGlmKCFrJiZhdC5jWzFdPj0xJiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV0tMV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLTEsYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfQoJCWs9ZmFsc2U7CgkJej1mYWxzZTsKCQlmb3IoaW50IGo9MDtqPDQ7aisrKXsKCQkJaWYoYXQuY1tqXT09YXQuY1sxXSsxJiZhdC5yW2pdPT1hdC5yWzFdKWs9dHJ1ZTsKCQkJaWYoYXQuY1tqXT09YXQuY1sxXSsyJiZhdC5yW2pdPT1hdC5yWzFdKXo9dHJ1ZTsKCQl9CgkJaWYoIXomJmsmJmF0LmNbMV08NiYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdKzJdW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSsyLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX1lbHNlIGlmKCFrJiZhdC5jWzFdPDcmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXSsxXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0rMSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9CgoJCWs9ZmFsc2U7CgkJej1mYWxzZTsKCQlmb3IoaW50IGo9MDtqPDQ7aisrKXsKCQkJaWYoYXQucltqXT09YXQuclsyXS0xJiZhdC5jW2pdPT1hdC5jWzJdKWs9dHJ1ZTsKCQkJaWYoYXQucltqXT09YXQuclsyXS0yJiZhdC5jW2pdPT1hdC5jWzJdKXo9dHJ1ZTsKCQl9CgkJaWYoIXomJmsmJmF0LnJbMl0+PTImJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXS0yXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXS0yLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9ZWxzZSBpZighayYmYXQuclsyXT49MSYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdLTFdW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLTEsYXQuY1syXSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX0KCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LnJbal09PWF0LnJbMl0rMSYmYXQuY1tqXT09YXQuY1syXSlrPXRydWU7CgkJCWlmKGF0LnJbal09PWF0LnJbMl0rMiYmYXQuY1tqXT09YXQuY1syXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5yWzJdPDYmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXSsyXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSsyLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9ZWxzZSBpZighayYmYXQuclsyXTw3JiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl0rMV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0rMSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfQoJCWs9ZmFsc2U7CgkJej1mYWxzZTsKCQlmb3IoaW50IGo9MDtqPDQ7aisrKXsKCQkJaWYoYXQuY1tqXT09YXQuY1syXS0xJiZhdC5yW2pdPT1hdC5yWzJdKWs9dHJ1ZTsKCQkJaWYoYXQuY1tqXT09YXQuY1syXS0yJiZhdC5yW2pdPT1hdC5yWzJdKXo9dHJ1ZTsKCQl9CgkJaWYoIXomJmsmJmF0LmNbMl0+PTImJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXS0yXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLTIsYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9ZWxzZSBpZighayYmYXQuY1syXT49MSYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdLTFdW2F0LnJbM11dW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0tMSxhdC5yWzNdLGF0LmNbM10sTykpOwoJCX0KCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LmNbal09PWF0LmNbMl0rMSYmYXQucltqXT09YXQuclsyXSlrPXRydWU7CgkJCWlmKGF0LmNbal09PWF0LmNbMl0rMiYmYXQucltqXT09YXQuclsyXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5jWzJdPDYmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXSsyXVthdC5yWzNdXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdKzIsYXQuclszXSxhdC5jWzNdLE8pKTsKCQl9ZWxzZSBpZighayYmYXQuY1syXTw3JiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl0rMV1bYXQuclszXV1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSsxLGF0LnJbM10sYXQuY1szXSxPKSk7CgkJfQoKCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LnJbal09PWF0LnJbM10tMSYmYXQuY1tqXT09YXQuY1szXSlrPXRydWU7CgkJCWlmKGF0LnJbal09PWF0LnJbM10tMiYmYXQuY1tqXT09YXQuY1szXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5yWzNdPj0yJiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM10tMl1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLTIsYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LnJbM10+PTEmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXS0xXVthdC5jWzNdXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10tMSxhdC5jWzNdLE8pKTsKCQl9CgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5yW2pdPT1hdC5yWzNdKzEmJmF0LmNbal09PWF0LmNbM10paz10cnVlOwoJCQlpZihhdC5yW2pdPT1hdC5yWzNdKzImJmF0LmNbal09PWF0LmNbM10pej10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuclszXTw2JiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM10rMl1bYXQuY1szXV0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdKzIsYXQuY1szXSxPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LnJbM108NyYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdKzFdW2F0LmNbM11dKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSsxLGF0LmNbM10sTykpOwoJCX0KCQlrPWZhbHNlOwoJCXo9ZmFsc2U7CgkJZm9yKGludCBqPTA7ajw0O2orKyl7CgkJCWlmKGF0LmNbal09PWF0LmNbM10tMSYmYXQucltqXT09YXQuclszXSlrPXRydWU7CgkJCWlmKGF0LmNbal09PWF0LmNbM10tMiYmYXQucltqXT09YXQuclszXSl6PXRydWU7CgkJfQoJCWlmKCF6JiZrJiZhdC5jWzNdPj0yJiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM10tMl0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10tMixPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LmNbM10+PTEmJiFiZnNbYXQuclswXV1bYXQuY1swXV1bYXQuclsxXV1bYXQuY1sxXV1bYXQuclsyXV1bYXQuY1syXV1bYXQuclszXV1bYXQuY1szXS0xXSl7CgkJCVEucHVzaCh3b2xmKGF0LnJbMF0sYXQuY1swXSxhdC5yWzFdLGF0LmNbMV0sYXQuclsyXSxhdC5jWzJdLGF0LnJbM10sYXQuY1szXS0xLE8pKTsKCQl9CgkJaz1mYWxzZTsKCQl6PWZhbHNlOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpZihhdC5jW2pdPT1hdC5jWzNdKzEmJmF0LnJbal09PWF0LnJbM10paz10cnVlOwoJCQlpZihhdC5jW2pdPT1hdC5jWzNdKzImJmF0LnJbal09PWF0LnJbM10paz10cnVlOwoJCX0KCQlpZigheiYmayYmYXQuY1szXTw2JiYhYmZzW2F0LnJbMF1dW2F0LmNbMF1dW2F0LnJbMV1dW2F0LmNbMV1dW2F0LnJbMl1dW2F0LmNbMl1dW2F0LnJbM11dW2F0LmNbM10rMl0pewoJCQlRLnB1c2god29sZihhdC5yWzBdLGF0LmNbMF0sYXQuclsxXSxhdC5jWzFdLGF0LnJbMl0sYXQuY1syXSxhdC5yWzNdLGF0LmNbM10rMixPKSk7CgkJfWVsc2UgaWYoIWsmJmF0LmNbM108NyYmIWJmc1thdC5yWzBdXVthdC5jWzBdXVthdC5yWzFdXVthdC5jWzFdXVthdC5yWzJdXVthdC5jWzJdXVthdC5yWzNdXVthdC5jWzNdKzFdKXsKCQkJUS5wdXNoKHdvbGYoYXQuclswXSxhdC5jWzBdLGF0LnJbMV0sYXQuY1sxXSxhdC5yWzJdLGF0LmNbMl0sYXQuclszXSxhdC5jWzNdKzEsTykpOwoJCX0KCQlpZihiZnNbcFszXS5maXJzdF1bcFszXS5zZWNvbmRdW3BbMl0uZmlyc3RdW3BbMl0uc2Vjb25kXVtwWzFdLmZpcnN0XVtwWzFdLnNlY29uZF1bcFswXS5maXJzdF1bcFswXS5zZWNvbmRdKWJyZWFrOwoJfQoJaWYoYmZzW3BbM10uZmlyc3RdW3BbM10uc2Vjb25kXVtwWzJdLmZpcnN0XVtwWzJdLnNlY29uZF1bcFsxXS5maXJzdF1bcFsxXS5zZWNvbmRdW3BbMF0uZmlyc3RdW3BbMF0uc2Vjb25kXSlwcmludGYoIllFU1xuIik7CgllbHNlIHByaW50ZigiTk9cbiIpOwp9