#include<iostream>
using std::endl;
using std::cout;
using std::cin;
inline bool isRes(long x,long y){//判断 x是否为y的平方根;
return (x*x==y)||((x*x<y)&&((x+1)*(x+1)>y));
}
int sqrt(long x){
long lit=0;
long big=x;
long mid=(big+lit)/2;//mid<big&&mid>=lit;
//每次循环开始之前保证,结果在[lit,big]中;
while(lit<=big){
//防止上界下界都无法改变,如(x==1),而造成的死循环;
if(isRes(lit,x))
return lit;
lit++;//修改下界;
//修改上下界;
mid=(lit+big)/2;
(mid*mid<x)?lit=mid:big=mid;
}
}
int main(){
int x;
while(cin>>x){
cout<<sqrt(x)<<endl;
}
}