#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll arr[300005];
ll suffix[300005];
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int n;
	cin>>n;
	for(int i=1; i<=n; i++) cin>>arr[i];
	for(int i=n; i>=1; i--) suffix[i] = suffix[i+1]+arr[i];
	ll ans = 0;
	for(int i=1; i<=n; i++){
		ll sq = arr[i]*arr[i];
		ans+=sq*(i-1);
		ans+=sq*(n-i);
		ans-=2*arr[i]*suffix[i+1];
	}
	cout<<ans;
}
#include <bits/stdc++.h>
//#include <chrono>
//#pragma GCC optimize("Ofast")
using namespace std;
#define reps(i,s,n) for(int i = s; i < n; i++)
#define rep(i,n) reps(i,0,n)
#define Rreps(i,n,e) for(int i = n - 1; i >= e; --i)
#define Rrep(i,n) Rreps(i,n,0)
#define ALL(a) a.begin(), a.end()

using ll = long long;
using vec = vector<ll>;
using mat = vector<vec>;

ll N,M,H,W,Q,K,A,B;
string S;
using P = pair<ll, ll>;
const ll INF = (1LL<<60);

template<class T> bool chmin(T &a, const T b){
    if(a > b) {a = b; return true;}
    else return false;
}
template<class T> bool chmax(T &a, const T b){
    if(a < b) {a = b; return true;}
    else return false;
}
template<class T> void my_printv(std::vector<T> v,bool endline = true){
    if(!v.empty()){
        for(std::size_t i{}; i<v.size()-1; ++i) std::cout<<v[i]<<" ";
        std::cout<<v.back();
    }
    if(endline) std::cout<<std::endl;
}



int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    vec num(401, 0);
    cin>>N;
    rep(i, N){
        cin>>A;
        ++num[A + 200];
    }
    ll res{};
    rep(i, 401){
        rep(j, i){
            res += num[i] * num[j] * (j - i) * (j - i);
        }
    }
    cout<<res<<endl;
}