A, B = map(int, input().split())
ans = 0
for i in range(40):
    # 含まれる1の数を数える
    tmp = (B-A) // 2**(i+1) * 2**i
    p = A%(2**(i+1))
    q = (B-A)%(2**(i+1))
    # p から p+qの中で余りが2**i ~ 2**(i+1)-1になる個数を求める
    tmp += max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0)
    tmp += max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0)
    ans += (tmp%2) * 2**i
print(ans) A, B = map(int, input().split()) A map(int, input().split()) map int input().split() ().split () input split B ans = 0 ans 0 for i in range(40):
    # 含まれる1の数を数える
    tmp = (B-A) // 2**(i+1) * 2**i
    p = A%(2**(i+1))
    q = (B-A)%(2**(i+1))
    # p から p+qの中で余りが2**i ~ 2**(i+1)-1になる個数を求める
    tmp += max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0)
    tmp += max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0)
    ans += (tmp%2) * 2**i i range(40) range 40 tmp = (B-A) // 2**(i+1) * 2**i tmp (B-A) // 2**(i+1) * 2**i (B-A) // 2**(i+1) B-A B A 2**(i+1) 2 i+1 i 1 2**i 2 i p = A%(2**(i+1)) p A%(2**(i+1)) A 2**(i+1) 2 i+1 i 1 q = (B-A)%(2**(i+1)) q (B-A)%(2**(i+1)) B-A B A 2**(i+1) 2 i+1 i 1 tmp += max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0) tmp max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0) max min(p+q,2**(i+1)-1) - max(p,2**i)+1 min(p+q,2**(i+1)-1) - max(p,2**i) min(p+q,2**(i+1)-1) min p+q p q 2**(i+1)-1 2**(i+1) 2 i+1 i 1 1 max(p,2**i) max p 2**i 2 i 1 0 tmp += max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0) tmp max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0) max min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1 min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1)) min(p+q,2**(i+1)-1 + 2**(i+1)) min p+q p q 2**(i+1)-1 + 2**(i+1) 2**(i+1)-1 2**(i+1) 2 i+1 i 1 1 2**(i+1) 2 i+1 i 1 max(p,2**i + 2**(i+1)) max p 2**i + 2**(i+1) 2**i 2 i 2**(i+1) 2 i+1 i 1 1 0 ans += (tmp%2) * 2**i ans (tmp%2) * 2**i tmp%2 tmp 2 2**i 2 i print(ans) print ans tmp += max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0) max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0) tmp tmp += max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0) max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0) tmp ans += (tmp%2) * 2**i (tmp%2) * 2**i ans p = A%(2**(i+1)) A%(2**(i+1)) p B = map(int, input().split()) map(int, input().split()) B q = (B-A)%(2**(i+1)) (B-A)%(2**(i+1)) q tmp = (B-A) // 2**(i+1) * 2**i (B-A) // 2**(i+1) * 2**i tmp ans = 0 0 ans A, B = map(int, input().split()) map(int, input().split()) A
A, B = map(int, input().split())
ans = 0
for i in range(40):
    # 含まれる1の数を数える
    tmp = (B-A) // 2**(i+1) * 2**i
    p = A%(2**(i+1))
    q = (B-A)%(2**(i+1))
    # p から p+qの中で余りが2**i ~ 2**(i+1)-1になる個数を求める
    tmp += max(min(p+q,2**(i+1)-1) - max(p,2**i)+1,0)
    tmp += max(min(p+q,2**(i+1)-1 + 2**(i+1)) - max(p,2**i + 2**(i+1))+1,0)
    ans += (tmp%2) * 2**i
print(ans)