import java.math.*;

public class Euler970 {
    public static String solve() {
        MathContext MC = new MathContext(120);
        BigDecimal PI = new BigDecimal(
                "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706807",
                MC);
        BigDecimal LN10 = new BigDecimal(
                "2.30258509299404568401799145468436420760110148862877297603332790096757260967735248023599720508959829834",
                MC);
        BigDecimal ALPHA = new BigDecimal(
                "-2.0888430156130438559570867167749475005456937410367296732391125442446071101031945", MC);
        BigDecimal BETA = new BigDecimal(
                "7.4614892856542545569061166121864153345090949932022092409344113914118766543223747", MC);
        BigDecimal den = ALPHA.multiply(ALPHA, MC).add(BETA.multiply(BETA, MC), MC);
        int n = 1000000;
        int wanted = 8;
        BigDecimal TWO_PI = PI.multiply(new BigDecimal(2), MC);
        BigDecimal raw = BETA.multiply(new BigDecimal(n), MC);
        BigDecimal theta = raw.subtract(raw.divideToIntegralValue(TWO_PI).multiply(TWO_PI, MC), MC);

        BigDecimal c = cosD(theta, MC), s = sinD(theta, MC);
        BigDecimal envelope = new BigDecimal(2).multiply(c.multiply(ALPHA, MC).add(s.multiply(BETA, MC), MC), MC)
                .divide(den, MC);
        BigDecimal sign = envelope.signum() >= 0 ? BigDecimal.ONE : BigDecimal.ONE.negate();

        BigDecimal log10eps = ALPHA.multiply(new BigDecimal(n), MC).divide(LN10, MC);
        log10eps = log10eps
                .add(envelope.abs().multiply(LN10, MC).stripTrailingZeros().equals(BigDecimal.ZERO) ? BigDecimal.ZERO
                        : logBD(envelope.abs(), MC).divide(LN10, MC), MC);

        int shift = log10eps.negate().setScale(0, RoundingMode.FLOOR).intValue();
        BigDecimal frac = log10eps.negate().subtract(new BigDecimal(shift));
        BigDecimal t = sign.multiply(expBD(frac.negate().multiply(LN10, MC), MC), MC); // 10^(-frac)

        BigDecimal base = new BigDecimal(2).divide(new BigDecimal(3), MC).add(t, MC);
        int q = base.setScale(0, RoundingMode.FLOOR).intValue();
        BigDecimal r = base.subtract(new BigDecimal(q));
        if (r.signum() < 0)
            r = r.add(BigDecimal.ONE);

        int[] tail = new int[40];
        java.util.Arrays.fill(tail, 6);
        int carry = q;
        for (int i = tail.length - 1; i >= 0 && carry != 0; i--) {
            int value = tail[i] + carry;
            if (value >= 0) {
                tail[i] = value % 10;
                carry = value / 10;
            } else {
                int borrow = (-value + 9) / 10;
                tail[i] = value + 10 * borrow;
                carry = -borrow;
            }
        }

        StringBuilder out = new StringBuilder();
        for (int d : tail) {
            if (d != 6) {
                out.append(d);
                if (out.length() == wanted)
                    return out.toString();
            }
        }
        BigDecimal f = r;
        while (out.length() < wanted) {
            f = f.multiply(BigDecimal.TEN);
            int digit = f.setScale(0, RoundingMode.FLOOR).intValue();
            digit = Math.max(0, Math.min(9, digit));
            f = f.subtract(new BigDecimal(digit));
            if (digit != 6)
                out.append(digit);
        }
        return out.substring(0, wanted);
    }

    static BigDecimal cosD(BigDecimal x, MathContext mc) {
        BigDecimal s = BigDecimal.ONE, t = BigDecimal.ONE;
        for (int i = 1; i < 80; i++) {
            t = t.negate().multiply(x, mc).multiply(x, mc).divide(new BigDecimal(2 * i * (2 * i - 1)), mc);
            s = s.add(t, mc);
        }
        return s;
    }

    static BigDecimal sinD(BigDecimal x, MathContext mc) {
        BigDecimal s = x, t = x;
        for (int i = 1; i < 80; i++) {
            t = t.negate().multiply(x, mc).multiply(x, mc).divide(new BigDecimal(2 * i * (2 * i + 1)), mc);
            s = s.add(t, mc);
        }
        return s;
    }

    static BigDecimal logBD(BigDecimal x, MathContext mc) {
        BigDecimal result = new BigDecimal(Math.log(x.doubleValue()), mc);
        for (int i = 0; i < 5; i++) {
            BigDecimal ex = expBD(result, mc);
            BigDecimal diff = x.subtract(ex, mc).divide(ex, mc);
            result = result.add(diff, mc);
        }
        return result;
    }

    static BigDecimal expBD(BigDecimal x, MathContext mc) {
        BigDecimal sum = BigDecimal.ONE, term = BigDecimal.ONE;
        for (int i = 1; i <= 100; i++) {
            term = term.multiply(x, mc).divide(new BigDecimal(i), mc);
            sum = sum.add(term, mc);
            if (term.abs().compareTo(new BigDecimal("1e-110")) < 0)
                break;
        }
        return sum;
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
