struct std::numeric_limits<int> {
    static const bool is_specialized = true;
    static int min () = -2147483648;
    static int max () = 2147483647;
    static const int digits = 31;
    static const int digits10 = 9;
    static const bool is_signed = true;
    static const bool is_integer = true;
    static const bool is_exact = true;
    static const int radix = 2;
    static int epsilon () = 0;
    static int round_error () = 0;
    static const int min_exponent = 0;
    static const int min_exponent10 = 0;
    static const int max_exponent = 0;
    static const int max_exponent10 = 0;
    static const bool has_infinity = false;
    static const bool has_quiet_NaN = false;
    static const bool has_signaling_NaN = false;
    static const std::float_denorm_style has_denorm = std::denorm_absent;
    static const bool has_denorm_loss = false;
    static int infinity () = 0;
    static int quiet_NaN () = 0;
    static int signaling_NaN () = 0;
    static int denorm_min () = 0;
    static const bool is_iec559 = false;
    static const bool is_bounded = true;
    static const bool is_modulo = true;
    static const bool traps = true;
    static const bool tinyness_before = false;
    static const int round_style = 0;
};

struct std::numeric_limits<double> {
    static const bool is_specialized = true;
    static double min () = 2.22507e-308;
    static double max () = 1.79769e+308;
    static const int digits = 53;
    static const int digits10 = 15;
    static const bool is_signed = true;
    static const bool is_integer = false;
    static const bool is_exact = false;
    static const int radix = 2;
    static double epsilon () = 2.22045e-16;
    static int round_error () = 0.5;
    static const int min_exponent = -1021;
    static const int min_exponent10 = -307;
    static const int max_exponent = 1024;
    static const int max_exponent10 = 308;
    static const bool has_infinity = true;
    static const bool has_quiet_NaN = true;
    static const bool has_signaling_NaN = true;
    static const std::float_denorm_style has_denorm = std::denorm_present;
    static const bool has_denorm_loss = false;
    static double infinity () = inf;
    static double quiet_NaN () = nan;
    static double signaling_NaN () = nan;
    static double denorm_min () = 4.94066e-324;
    static const bool is_iec559 = true;
    static const bool is_bounded = true;
    static const bool is_modulo = false;
    static const bool traps = false;
    static const bool tinyness_before = false;
    static const int round_style = 1;
};
