#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N=5000010;
int c[N],d[N];
int n;
vector<int>v(1);
void init(){
memset(c,-1,sizeof(c));
for(int i=1;i*i<2*n;i++){
v.push_back(i*i);
}
for(int i=0;v[i]<=n;i++){
for(int j=i;v[i]+v[j]<=n;j++){
int sum=v[i]+v[j];
if(c[sum]==-1){//第一次遇见的数
c[sum]=i;
d[sum]=j;
}
}
}
}
int main(){
cin>>n;
init();
int res;
for(int i=0;v[i]<=n;i++){
for(int j=i;v[j]+v[i]<=n;j++){
res=n-v[i]-v[j];
if(c[res]!=-1){//表示该数已经被记录过,可以拆成两个数平方的形式
cout<<i<<" "<<j<<" ";
cout<<c[res]<<" "<<d[res];
return 0;
}
}
}
}