#include using namespace std; using ll = long long; #define rep(i,n) for (ll i=0; i<(ll)(n); i++) vector a; ll h(ll n, ll v) { if (n == 0) return 0; ll m = n - 1; array, 2> dp{}, ndp{}; dp[0][0] = 1; for (ll d=60; 0<=d; d--) { rep(fx, 2) rep(fy, 2) ndp[fx][fy] = 0; ll bm = (m >> d) & 1; ll bv = (v >> d) & 1; rep(fx, 2) { rep(fy, 2) if (dp[fx][fy] != 0) { rep(bx, 2) { rep(by, 2) { if (fx==0 && bm> n; a.resize(31); a[0] = 0; rep(d, 30) a[d+1] = 4 * a[d] + 2; ll ans = 0; ll p = 1; rep(k, 30) { ll l = p, r = n + 1; while (1 < r - l) { ll m = (r - l) / 2 + l; if (g(m) < a[k+1]) l = m; else r = m; } ans += (r - p) * a[k]; p = r; } cout << ans << endl; }