#include<iostream>
int main(){
	int N;
	std::cin>>N;
	long int* A=new long int[N];
	long sum=0;
	for(int i=0;i<N;i++){
		std::cin>>A[i];
		sum+=A[i];
		sum%=1000000007;
	}
	long ans=0;
	for(int i=0;i<N;i++){
		sum-=A[i];
		if(sum<0){
			sum+=1000000007;
		}
		ans+=sum*A[i];
		ans%=1000000007;
	}
	std::cout<<ans;
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//#include <boost/multiprecision/cpp_ll.hpp>
//typedef boost::multiprecision::cpp_ll ll;
typedef long double dd;
#define i_7 (ll)(1E9+7)
//#define i_7 998244353
#define i_5 i_7-2
ll mod(ll a){
    ll c=a%i_7;
    if(c>=0)return c;
    return c+i_7;
}
typedef pair<ll,ll> l_l;
ll inf=(ll)1E18;
#define rep(i,l,r) for(ll i=l;i<=r;i++)
#define pb push_back
ll max(ll a,ll b){if(a<b)return b;else return a;}
ll min(ll a,ll b){if(a>b)return b;else return a;}
void Max(ll &pos,ll val){pos=max(pos,val);}//Max(dp[n],dp[n-1]);
void Min(ll &pos,ll val){pos=min(pos,val);}
void Add(ll &pos,ll val){pos=mod(pos+val);}
dd EPS=1E-9;
#define endl "\n"
#define fastio ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);



int main(){fastio
    ll n;cin>>n;
    ll a[n];rep(i,0,n-1)cin>>a[i];
    ll b=0;
    ll c=0;
    rep(i,0,n-1){
        b+=a[i];
        c+=a[i]*a[i];
        b=mod(b);
        c=mod(c);
    }
    ll ans=mod(b*b-c);
    if(ans%2==0){
        cout<<mod(ans/2)<<endl;
    }else{
        cout<<mod((ans+i_7)/2)<<endl;
    }

    return 0;
}



