public class Euler872 {

    static long highestPow2Leq(long x) {
        return 1L << (63 - Long.numberOfLeadingZeros(x));
    }

    static long fFast(long n, long k) {
        long cur = k;
        long sum = cur;
        while (cur < n) {
            long step = highestPow2Leq(n - cur);
            cur += step;
            sum += cur;
        }
        return sum;
    }

    static long powU64(long a, int e) {
        long r = 1;
        while (e-- > 0)
            r *= a;
        return r;
    }

    public static String solve() {
        long n = powU64(10, 17);
        long k = powU64(9, 17);
        return Long.toString(fFast(n, k));
    }

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