import java.lang.Math;

public class Euler45 {

    private static boolean runCheckpoints = true;

    private static boolean isPentagonal(long x) {
        if (x <= 0) {
            return false;
        }
        double disc = 1.0 + 24.0 * x;
        double root = Math.sqrt(disc);
        double n = (1.0 + root) / 6.0;
        long k = Math.round(n);
        return k > 0 && (k * (3 * k - 1) / 2 == x);
    }

    private static long solve() {
        for (long n = 144; ; ++n) {
            long hexagonal = n * (2 * n - 1);
            if (isPentagonal(hexagonal)) {
                return hexagonal;
            }
        }
    }

    private static boolean runCheckpoints() {
        if (!isPentagonal(40755)) {
            System.err.println("Checkpoint failed for 40755");
            return false;
        }
        if (isPentagonal(40756)) {
            System.err.println("Checkpoint failed for 40756");
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        for (int i = 0; i < args.length; ++i) {
            if ("--skip-checkpoints".equals(args[i])) {
                runCheckpoints = false;
            } else {
                System.err.println("Unknown argument: " + args[i]);
                System.exit(1);
            }
        }

        if (runCheckpoints && !runCheckpoints()) {
            System.exit(2);
        }

        System.out.println(solve());
    }
}
