#include<bits/stdc++.h>
using namespace std;
inline int pow2(int n)
{
return n*n;
}
int main()
{
int a,b;
cin>>a>>b;
vector<pair<int,int> > v1,v2;
for(int i=1;i<=1000;i++)
for(int j=1;j<=1000;j++)
{
if(i*i+j*j==a*a)v1.push_back(make_pair(i,j));
if(i*i+j*j==b*b)v2.push_back(make_pair(i,j));
}
if(v1.empty() || v2.empty()){
cout<<"NO";
return 0;
}
vector<pair<int,int> >::iterator i1,i2;
for(i1=v1.begin();i1!=v1.end();i1++)
for(i2=v2.begin();i2!=v2.end();i2++)
{
if(a*a+b*b == pow2(i2->first + i1->first)+pow2(i1->second-i2->second)
&& i1->second != i2->second){
cout<<"YES\n";
cout<<"0 0\n";
printf("%d %d\n%d %d",-i1->first,i1->second,i2->first,i2->second);
return 0;
}
}
cout<<"NO";
}