A, B = map(int,input().split())

# K以下の排他的論理和(K < 0 では 0を返す)
def solve(K):
    if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
    ans = ((K+1) // 2) % 2
    if K % 2 == 0:
        ans ^= K
    return ans
print(solve(A-1) ^ solve(B)) A, B = map(int,input().split()) A map(int,input().split()) map int input().split() ().split () input split B def solve(K):
    if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
    ans = ((K+1) // 2) % 2
    if K % 2 == 0:
        ans ^= K
    return ans solve if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
     K <= 3 K 3 ans = 0 ans 0 for i in range(K+1):
            ans ^= i
         i range(K+1) range K+1 K 1 ans ^= i ans i return ans ans ans = ((K+1) // 2) % 2 ans ((K+1) // 2) % 2 (K+1) // 2 K+1 K 1 2 2 if K % 2 == 0:
        ans ^= K
     K % 2 == 0 K % 2 K 2 0 ans ^= K ans K return ans ans K K print(solve(A-1) ^ solve(B)) print solve(A-1) ^ solve(B) solve(A-1) solve A-1 A 1 solve(B) solve B B = map(int,input().split()) map(int,input().split()) B A, B = map(int,input().split()) map(int,input().split()) A def solve(K):
    if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
    ans = ((K+1) // 2) % 2
    if K % 2 == 0:
        ans ^= K
    return ans def solve(K):
    if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
    ans = ((K+1) // 2) % 2
    if K % 2 == 0:
        ans ^= K
    return ans solve
A, B = map(int,input().split())

# K以下の排他的論理和(K < 0 では 0を返す)
def solve(K):
    if K <= 3:
        ans = 0
        for i in range(K+1):
            ans ^= i
        return ans
    ans = ((K+1) // 2) % 2
    if K % 2 == 0:
        ans ^= K
    return ans
print(solve(A-1) ^ solve(B))