def main():
    A, B = map(int, input().split())

    ans = f(A, B)
    print(ans)


def TLE(A, B):
    ans = A
    for y in range(A+1, B+1):
        ans ^= y

    return ans


def f(A, B):
    """
    2^0: 0001
    2^1: 0010
         0011
    2^2: 0100
         0101
         0110
         0111
    2^3: 1000

    連番のdiff:
        1増えるので,2進数では下1桁は必ず異なる
        桁上りを考慮するとすべて変わる可能性もある
        1/2個,下二桁以外は同じになるので0になる
        偶数ベースに奇数との比較をする場合は 000...01
            0^1: 000 001, 001
            2^3: 010 010, 001
            4^5: 100 101, 001
            6^7: 110 111, 001

            この 01 になる偶数奇数のペア数が
            偶数個なら xor=0
            奇数個なら xor=1
    その次
         1- 2: 001- 010 -> 011
         2- 3: 010- 011 -> 001
         3- 4: 011- 100 -> 111
        11-12:1011-1100 -> 111

      a=0^1^2^3^4^5
      b=0^1^2^3^4^5^6^7^8
    a^b=            6^7^8
    """
    def xor_from_zero(x):
        if x == 0:
            return 0
        if x % 2 == 1:
            # 0含めたペアなので+1
            return (x + 1) // 2 % 2
        else:
            # e.g. :01234 0123までペア
            return x ^ (x // 2 % 2)

    a = xor_from_zero(A - 1)
    b = xor_from_zero(B)
    ans = a ^ b
    return ans


if __name__ == "__main__":
    main()
