这个要取余吧,给你个dp的解法,
while True:
  try:
    n = int(raw_input())
    colors = map(int, raw_input().split())
    dp = [1 for i in xrange(n)]
    mod = 1000000007

    for i in xrange(1,n):
      dp[i] = dp[i-1]
      for j in xrange(i-1,-1,-1):
        if colors[j] not in colors[j+1:i+1]:
          if j-1 >= 0:
            dp[i] += dp[j-1]%mod
            dp[i] %= mod
          else:
            dp[i] += 1
        else:
          break
    print dp[-1]
  except:
    break