import java.util.*;


public class Solution {
    /**
     *
     * @param x int整型
     * @return int整型
     */
    public boolean moreOk(long x, long y, long xx) {
        long r1 = x * x - xx;
        r1 = r1 > 0 ? r1 : -r1;
        long r2 = y * y - xx;
        r2 = r2 > 0 ? r2 : -r2;
        System.out.println(x + "," + y + "," + xx + "\t" + r1 + "," + r2);
        return r1 < r2;
    }
    public int mysqrt (int x) {
        // write code here
        long l = 0L, r = 1 << 17;
        long mid = (l + r) >> 1;
        while (l <= r) {
            if (mid * mid == x)return new Long(mid).intValue();
            if (mid * mid > x) {
                if (moreOk(mid, mid - 1, (long)x)) {
                    return new Long(mid).intValue() - 1;
                }
                r = mid - 1;
            } else {
                if (moreOk(mid, mid + 1, (long)x)) {
                    return new Long(mid).intValue();
                }
                l = mid + 1;
            }
            mid = (l + r) >> 1;
        }
        return new Long(mid).intValue();
    }
}