n=gets.to_i; s=0; 62.times{|j| i=2**j; cnt=(n+1)/(2*i); s+=i*i*cnt*(cnt-1); s+=cnt*(3*i*i-i)/2; if (n+1)%(2*i)>i then m=(n+1)%(2*i)-i; s+=m*(m-1)/2+m*(2*i*cnt+i); end; } p s.%10**9+7