#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int llint; typedef long double lldo; #define mp make_pair #define mt make_tuple #define pub push_back #define puf push_front #define pob pop_back #define pof pop_front #define fir first #define sec second #define res resize #define ins insert #define era erase //cout<void mineq(T& a,U b){if(a>b){a=b;}} template void maxeq(T& a,U b){if(a void SO(T& ve){sort(ve.begin(),ve.end());} template void REV(T& ve){reverse(ve.begin(),ve.end());} int LBI(vector&ar,int in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();} int UBI(vector&ar,int in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();} int main(void){ cin.tie(0); ios::sync_with_stdio(false); //3,5,7 105単位で検索する 8セットできる int K;cin>>K; int i,j,h,a,b; int c[8][2]={0}; for(b=0;b<8;b++){ int ta=1; if(b&1){ta+=70;} if(b&2){ta+=63;} if(b&4){ta+=75;} ta%=105; if(ta==1){ta+=105;} for(i=ta;i<10000;i+=105){ bool mitu=false; for(j=ta;j<10000;j+=105){ int ko=i+j; bool ok=true; for(h=2;h*h<=ko;h++){if(ko%h==0){ok=false;break;}} if(!ok){continue;} c[b][0]=i;c[b][1]=j;mitu=true; break; } if(mitu){break;} } } //いよいよKを削っていく int ry[8]={0}; int n=0; for(b=0;b<8&&K>0;b++){ int aa=sqrt(K+0.00001); n+=aa*2; ry[b]=aa; K-=aa*aa; } cout<