#include<bits/stdc++.h>
using namespace std;
int a[10],deep;
int x,y,z;
struct ND{
int x,y,z;
};
ND read(){
for(int i=1;i<=3;i++){
cin>>a[i];
}
sort(a+1,a+4);
x=a[1];
y=a[2];
z=a[3];
return {x,y,z};
}
ND ini(ND nd,int &deep){
deep=1;
int d1=nd.y-nd.x,d2=nd.z-nd.y;
while(d1!=d2){
deep++;
if(d1<d2){
nd.y+=d1;
nd.x+=d1;
}else{
nd.y-=d2;
nd.z-=d2;
}
d1=nd.y-nd.x,d2=nd.z-nd.y;
}
return nd;
}
bool isSame(ND s1,ND s2){
return (s1.x==s2.x and s1.y==s2.y and s1.z==s2.z);
}
ND up(ND nd,int step){
while(step--){
int d1=nd.y-nd.x,d2=nd.z-nd.y;
if(d1!=d2){
if(d1<d2){
nd.y+=d1;
nd.x+=d1;
}else{
nd.y-=d2;
nd.z-=d2;
}
}
}
return nd;
}
int main(){
int deep1;
ND nd1=read();
ND fa1=ini(nd1,deep1);
int deep2;
ND nd2=read();
ND fa2=ini(nd2,deep2);
if(isSame(fa1,fa2)){
cout<<"YES"<<endl;
if(deep1>deep2){
nd1=up(nd1,deep1-deep2);
}
if(deep2>deep1){
nd2=up(nd2,deep2-deep1);
}
int tempde=0;
while(!isSame(nd1,nd2)){
tempde++;
nd1=up(nd1,1);
nd2=up(nd2,1);
}
if(deep1>deep2){
cout<<deep1+deep2-2*(deep2-tempde);
}
if(deep1<deep2){
cout<<deep1+deep2-2*(deep1-tempde);
}
}else{
cout<<"NO";
}
return 0;
}