#include #include #include #include #include #include #include using namespace std; int64_t fill_all_but_one(int64_t N, int64_t &k, int64_t &ans){ for(int i = 63; i >= 0; i--){ if((1LL<= 0; i--){ if((1LL<< i) & ((1LL<= 0; i--){ if((1LL<> N >> k; int64_t ans = 0; if(k == 1) solve_just_one(N, k, ans); else{ int pos = fill_all_but_one(N, k, ans); bool okey = false; if(pos > -1) okey = fill_last_one(N, pos, ans); pos = max(pos,0); if(!okey) {k--; fix_last_one(N, pos, k, ans);} } cout << ans << endl; return 0; }