public class Ykkosbitit {
    public static long hidas(long raja) {
        long tulos = 0;
        for (long i = 1; i <= raja; i++) {
            String bin = Long.toBinaryString(i);
            for (int j = 0; j < bin.length(); j++) {
                if (bin.charAt(j) == '1') tulos++;
            }
        }
        return tulos;
    }

    public static long nopea(long raja) {
        long tulos = 0;
        for (long i = 2; i <= raja*2; i *= 2) {
            tulos += (raja/i)*(i/2);
            if (raja%i+1 >= i/2) {
                tulos += raja%i+1-i/2;
            }
        }
        return tulos;
    }

    public static void main(String[] args) {
        System.out.println(hidas(20));
        System.out.println(nopea(20));
        System.out.println(nopea(12345678987654321L));
    }
}
