output_description: Print the number of the subsequences such that all characters are different,
  modulo 10^9+7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      S
attempt: N, A, B = list(map(int, input().split(" ")))
  
  C = A ^ B
  c = format(A ^ B, "b")
  p = list()
  p.append(A)
  for i in range(len(c)):
      if int(c[len(c) - 1 - i]) == 1:
          tmp = p[-1] ^ (C & (1 << i))
          p.append(tmp)
  for i in range(2**N - len(p)):
      p.append(p[-2])
  if B == p[2**N - 1]:
      print("YES")
      for i in range(len(p)):
          print(p[i], end=" ")
  else:
      print("NO")
  
problem_description: Statement
  
  You are given a string S of length N. Among its subsequences, count the ones
  such that all characters are different, modulo 10^9+7. Two subsequences are
  considered different if their characters come from different positions in the
  string, even if they are the same as strings.
  
  Here, a subsequence of a string is a concatenation of **one or more**
  characters from the string without changing the order.
samples: [{"input": "4\n    abcd", "output": "15\n    \n\nSince all characters in S itself are different, all its subsequences satisfy\nthe condition.\n\n* * *"}, {"input": "3\n    baa", "output": "5\n    \n\nThe answer is five: `b`, two occurrences of `a`, two occurrences of `ba`. Note\nthat we do not count `baa`, since it contains two `a`s.\n\n* * *"}, {"input": "5\n    abcab", "output": "17"}]