public class Euler918 {

    static class Pair {
        long x, y;

        Pair(long x, long y) {
            this.x = x;
            this.y = y;
        }
    }

    static Pair pairValue(long n) {
        if (n == 1) {
            return new Pair(1, 2);
        }
        if ((n & 1L) == 0) {
            Pair p = pairValue(n >> 1);
            return new Pair(2 * p.x, p.x - 3 * p.y);
        }
        Pair p = pairValue(n >> 1);
        return new Pair(p.x - 3 * p.y, 2 * p.y);
    }

    static long aValue(long n) {
        return pairValue(n).x;
    }

    static long prefixSum(long n) {
        if ((n & 1L) == 0) {
            return 4 - aValue(n >> 1);
        }
        return 4 - 3 * aValue((n + 1) >> 1);
    }

    public static String solve() {
        return Long.toString(prefixSum(1000000000000L));
    }

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