public class Euler144 {
    public static void main(String[] args) {
        double px = 0, py = 10.1, cx = 1.4, cy = -9.6;
        int bounces = 0;
        while (true) {
            double dx = cx - px, dy = cy - py;
            double nx = 8 * cx, ny = 2 * cy, nl = Math.sqrt(nx * nx + ny * ny);
            nx /= nl;
            ny /= nl;
            double dot = dx * nx + dy * ny;
            double rdx = dx - 2 * dot * nx, rdy = dy - 2 * dot * ny;
            double a = 4 * rdx * rdx + rdy * rdy, b = 2 * (4 * cx * rdx + cy * rdy);
            double t = -b / a;
            px = cx;
            py = cy;
            cx += t * rdx;
            cy += t * rdy;
            bounces++;
            if (Math.abs(cx) <= 0.01 && cy > 0)
                break;
        }
        System.out.println(bounces);
    }
}
