#include<iostream> #include<cstdio> using namespace std; int c[35][35]; void Init() { int i,j; for(i=0;i<33;i++) { c[i][0]=c[i][i]=1; for(j=1;j<i;j++) c[i][j]=c[i-1][j]+c[i-1][j-1]; } } int slove(int n) { int len=0,bit[35],i,j,sum=0,one=1,zero=0; while(n) { bit[++len]=n%2; n/=2; } for(i=1;i<len;i++) for(j=(i+1)/2;j<i;j++) sum+=c[i-1][j]; for(i=len-1;i;i--) if(bit[i]) { zero++; for(j=max(0,(len+1)/2-zero);j<i;j++) sum+=c[i-1][j]; zero--; one++; } else zero++; return sum; } int main() { int L,R; Init(); while(scanf("%d%d",&L,&R)!=EOF) printf( "%d\n",slove(R+1)-slove(L) ); return 0; }