a, b = map(int, input().split())

# f(a,b) = f(0,a-1) ^ f(0,b)

# 0からxまでのxorの計算
def calc_xor(x):
    if (x+1) % 2 == 0:
        if (x+1) // 2 % 2 == 0:
            return 0
        else:
            return 1
    else:
        if x // 2 % 2 == 0:
            return 0 ^ x
        else:
            return 1 ^ x

print(calc_xor(a-1) ^ calc_xor(b))

1b6763c31cc29d7263ee60e450348c6d5b3b782c
<mask token>

<mask token>


def calc_xor(x):
    if (x + 1) % 2 == 0:
        if (x + 1) // 2 % 2 == 0:
            return 0
        else:
            return 1
    elif x // 2 % 2 == 0:
        return 0 ^ x
    else:
        return 1 ^ x


<mask token>

<mask token>


def calc_xor(x):
    if (x + 1) % 2 == 0:
        if (x + 1) // 2 % 2 == 0:
            return 0
        else:
            return 1
    elif x // 2 % 2 == 0:
        return 0 ^ x
    else:
        return 1 ^ x


print(calc_xor(a - 1) ^ calc_xor(b))

a, b = map(int, input().split())


def calc_xor(x):
    if (x + 1) % 2 == 0:
        if (x + 1) // 2 % 2 == 0:
            return 0
        else:
            return 1
    elif x // 2 % 2 == 0:
        return 0 ^ x
    else:
        return 1 ^ x


print(calc_xor(a - 1) ^ calc_xor(b))

a, b = map(int, input().split())

# f(a,b) = f(0,a-1) ^ f(0,b)

# 0からxまでのxorの計算
def calc_xor(x):
    if (x+1) % 2 == 0:
        if (x+1) // 2 % 2 == 0:
            return 0
        else:
            return 1
    else:
        if x // 2 % 2 == 0:
            return 0 ^ x
        else:
            return 1 ^ x

print(calc_xor(a-1) ^ calc_xor(b))
