#include<stdio.h>
#include<stdlib.h>
int dv[22004];
int isprime(long n){
if(dv[n]==0){
return 1;
}
return 0;
}
int main(){
long j=0,i=0,p2=0,p1=0;
long n=0,p3=0;
for(i=2;i<=22002;i++){
for(j=2*i;j<=22002;j+=i){
dv[j]=1;
}
}
scanf("%ld",&n);
while(n){
p2=0;
for(i=100;i>=2;i--){
if(((p3=i*i*i)<n)&& isprime(i)){
for(j=2;j<=101;j++){
p1=n-p3-j*j;
if(p1<2){
break;
}
if(isprime(j)&&isprime(p1)){
printf("%ld %ld %ld\n",p1,j,i);
p2=1;
break;
}
}
}
if(p2)
break;
}
if(!p2)
printf("0 0 0\n");
scanf("%ld",&n);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CmludCBkdlsyMjAwNF07CmludCBpc3ByaW1lKGxvbmcgbil7CmlmKGR2W25dPT0wKXsKICAgICAgICByZXR1cm4gMTsKfQpyZXR1cm4gMDsKfQppbnQgbWFpbigpewpsb25nIGo9MCxpPTAscDI9MCxwMT0wOwpsb25nIG49MCxwMz0wOwpmb3IoaT0yO2k8PTIyMDAyO2krKyl7CiAgICBmb3Ioaj0yKmk7ajw9MjIwMDI7ais9aSl7CiAgICAgICAgZHZbal09MTsKICAgIH0KfQpzY2FuZigiJWxkIiwmbik7CndoaWxlKG4pewogICAgICAgIHAyPTA7CmZvcihpPTEwMDtpPj0yO2ktLSl7CiAgICBpZigoKHAzPWkqaSppKTxuKSYmIGlzcHJpbWUoaSkpewogICAgICAgIGZvcihqPTI7ajw9MTAxO2orKyl7CiAgICAgICAgICAgIHAxPW4tcDMtaipqOwogICAgICAgICAgICBpZihwMTwyKXsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGlzcHJpbWUoaikmJmlzcHJpbWUocDEpKXsKICAgICAgICAgICAgICAgIHByaW50ZigiJWxkICVsZCAlbGRcbiIscDEsaixpKTsKICAgICAgICAgICAgICAgIHAyPTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9CiAgICBpZihwMikKICAgIGJyZWFrOwp9CmlmKCFwMikKcHJpbnRmKCIwIDAgMFxuIik7CnNjYW5mKCIlbGQiLCZuKTsKfQpyZXR1cm4gMDsKfQo=