#include <cstdio>
(31159)#include <iostream>
using namespace std;
int a[1000010];
long long deal(int begin,int end)
{
long long ans = 0;
for(int i=begin+1;i<=end-1;i++)
{
int left = i-begin+1;
int right = end - i;
long long tmp = ((left)*right+left-1)*a[i];
ans+=tmp;
ans%=10000007;
}
ans += (a[begin]+a[end])*(end-begin);
return ans;
}
int main() {
int n;
cin>>n;
long long ans=0;
int beg =1;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i] == a[i-1])
{
ans += deal(beg,i-1);
ans = ans%10000007;
beg = i;
}
}
ans += deal(beg,n);
ans = ans%10000007;
cout<<ans;
}
// 64 位输出请用 printf("%lld")