output_description: Print all pairs (k, x) such that a' and b will be equal, using one line for
  each pair, in ascending order of k (ascending order of x for pairs with the
  same k).
  
  If there are no such pairs, the output should be empty.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      a_0 a_1 ... a_{N-1}
      b_0 b_1 ... b_{N-1}
attempt: def main():
      mod = 2**61 - 1
      pow3 = [1] * 400001
      pow3i = [1] * 200001
      p = 1
      i3 = pow(3, mod - 2, mod)
      for i in range(1, 400001):
          p = p * 3 % mod
          pow3[i] = p
      p = 1
      for i in range(1, 200001):
          p = p * i3 % mod
          pow3i[i] = p
  
      class rolling_hash:
          def __init__(self, seq):
              seq_size = len(seq)  # 文字列の長さ
              self.H0s = [0] * (seq_size + 1)  # 先頭からi-1文字目までのハッシュ値
              H0s, p = self.H0s, 0
              for i, j in enumerate(seq):
                  p = (p + (j + 1) * pow3[i]) % mod
                  H0s[i + 1] = p
  
          def calc_hash(self, l, r):  # l文字目からr-1文字目までのハッシュ値
              H0s = self.H0s
              return ((H0s[r] - H0s[l]) * pow3i[l]) % mod
  
      def rolling_hash2(seq):
          p = 0
          for i, j in enumerate(seq):
              p += (j + 1) * pow3[i] % mod
          return p % mod
  
      n = int(input())
      a = list(map(int, input().split()))
      b = list(map(int, input().split()))
      m = max(a + b)
      a += a
      a1 = [0] * (2 * n)
      a2 = [0] * (2 * n)
      b1 = [0] * n
      memo = [0] * n
      cnt = n
  
      for k in range(len(bin(m)) - 2):
          k2 = 2**k
          for i, j in enumerate(a):
              p = j & k2
              a1[i] = p
              a2[i] = p ^ k2
          for i, j in enumerate(b):
              b1[i] = j & k2
          b_hash = rolling_hash2(b1)
          A1 = rolling_hash(a1)
          A2 = rolling_hash(a2)
          for i, j in enumerate(memo):
              if j is None:
                  continue
              elif A1.calc_hash(i, i + n) == b_hash:
                  pass
              elif A2.calc_hash(i, i + n) == b_hash:
                  memo[i] += k2
              else:
                  memo[i] = None
                  cnt -= 1
          if cnt == 0:
              print(-1)
              return
  
      for i, j in enumerate(memo):
          if j is not None:
              print(i, j)
  
  
  main()
  
problem_description: Statement
  
  Given are two sequences a=\\{a_0,\ldots,a_{N-1}\\} and
  b=\\{b_0,\ldots,b_{N-1}\\} of N non-negative integers each.
  
  Snuke will choose an integer k such that 0 \leq k < N and an integer x not
  less than 0, to make a new sequence of length N,
  a'=\\{a_0',\ldots,a_{N-1}'\\}, as follows:
  
    * a_i'= a_{i+k \mod N}\ XOR \ x
  
  Find all pairs (k,x) such that a' will be equal to b.
  
  What is \mbox{ XOR }?
  
  The XOR of integers A and B, A \mbox{ XOR } B, is defined as follows:
  
    * When A \mbox{ XOR } B is written in base two, the digit in the 2^k's place (k \geq 0) is 1 if either A or B, but not both, has 1 in the 2^k's place, and 0 otherwise.
  
  For example, 3 \mbox{ XOR } 5 = 6. (In base two: 011 \mbox{ XOR } 101 = 110.)
samples: [{"input": "3\n    0 2 1\n    1 2 3", "output": "1 3\n    \n\nIf (k,x)=(1,3),\n\n  * a_0'=(a_1\\ XOR \\ 3)=1\n\n  * a_1'=(a_2\\ XOR \\ 3)=2\n\n  * a_2'=(a_0\\ XOR \\ 3)=3\n\nand we have a' = b.\n\n* * *"}, {"input": "5\n    0 0 0 0 0\n    2 2 2 2 2", "output": "0 2\n    1 2\n    2 2\n    3 2\n    4 2\n    \n\n* * *"}, {"input": "6\n    0 1 3 7 6 4\n    1 5 4 6 2 3", "output": "2 2\n    5 5\n    \n\n* * *"}, {"input": "2\n    1 2\n    0 0", "output": "No pairs may satisfy the condition."}]