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

# 0 ^ 1 ^ ... ^ N
def xor_0_to_N(N):
    if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
    return s

"""
XOR = 0
for i in range(1, 20):
    print("idx", i)
    XOR ^= i
    print(XOR)
    print(xor_0_to_N(i))
"""

print(xor_0_to_N(A-1) ^ xor_0_to_N(B)) A, B = map(int, input().split()) A map(int, input().split()) map int input().split() ().split () input split B def xor_0_to_N(N):
    if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
    return s xor_0_to_N if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
     (N+1) % 2 == 0 (N+1) % 2 N+1 N 1 2 0 s = (N+1) // 2 % 2 s (N+1) // 2 % 2 (N+1) // 2 N+1 N 1 2 2 s = ((N+1) // 2 % 2) ^ N s ((N+1) // 2 % 2) ^ N (N+1) // 2 % 2 (N+1) // 2 N+1 N 1 2 2 N return s s N N """
XOR = 0
for i in range(1, 20):
    print("idx", i)
    XOR ^= i
    print(XOR)
    print(xor_0_to_N(i))
""" print(xor_0_to_N(A-1) ^ xor_0_to_N(B)) print xor_0_to_N(A-1) ^ xor_0_to_N(B) xor_0_to_N(A-1) xor_0_to_N A-1 A 1 xor_0_to_N(B) xor_0_to_N B B = map(int, input().split()) map(int, input().split()) B A, B = map(int, input().split()) map(int, input().split()) A def xor_0_to_N(N):
    if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
    return s def xor_0_to_N(N):
    if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
    return s xor_0_to_N

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

# 0 ^ 1 ^ ... ^ N
def xor_0_to_N(N):
    if (N+1) % 2 == 0:
        s = (N+1) // 2 % 2
    else:
        s = ((N+1) // 2 % 2) ^ N
    return s

"""
XOR = 0
for i in range(1, 20):
    print("idx", i)
    XOR ^= i
    print(XOR)
    print(xor_0_to_N(i))
"""

print(xor_0_to_N(A-1) ^ xor_0_to_N(B))