fork download
  1. mod=1000000007
  2.  
  3. def add(a,b):
  4. res=(a+b)%mod
  5. if(res<0):
  6. return (res+mod)
  7. else:
  8. return res
  9.  
  10. def mul(a,b):
  11. res=(a*b)%mod
  12. if(res<0):
  13. return res+mod
  14. else:
  15. return res
  16.  
  17.  
  18. n=int(input())
  19. a=[int(i) for i in input().split()]
  20.  
  21. dp=[]
  22. for i in range(0,1030):
  23. dp.append([])
  24. for j in range(0,1030):
  25. dp[i].append(-mod)
  26.  
  27.  
  28. dp[0][0]=0
  29. dp[0][a[0]]=1
  30.  
  31. for i in range(1,n):
  32. for j in range(0,1001):
  33. dp[i][j]=dp[i-1][j]
  34. for j in range(0,1001):
  35. dp[i][a[i]^j]=max(dp[i-1][j]+1,dp[i-1][a[i]^j])
  36.  
  37. l=a[0]
  38. for i in range(1,n):
  39. if(a[i]>l):
  40. l=a[i]
  41.  
  42.  
  43. po=[]
  44. po.append(1)
  45. for i in range (1,l+1):
  46. po.append(mul(po[i-1],31))
  47.  
  48. ans=0
  49. for i in range(0,l+1):
  50. if(dp[n-1][i]<0):
  51. dp[n-1][i]=0
  52. ans=add(ans,mul(dp[n-1][i],po[i]))
  53.  
  54. print(ans)
  55.  
  56.  
Success #stdin #stdout 0.18s 37600KB
stdin
4
1 2 3 4
stdout
3755653