import bisect,collections,itertools,math,functools,heapq import sys sys.setrecursionlimit(10**6) def LI(): return list(map(int,sys.stdin.readline().rstrip().split())) def I(): return int(sys.stdin.readline().rstrip()) N=I() A=LI() ans = 1 mod = 10**9+7 n = 0 sums = 0 for i in range(N): ans *= A[i] ans %= mod if i>=2: if n==0: n = A[0] n *= A[i-1] ans += n * (N-1) ans += 3**(N-1) - N ans %= mod print(ans)