#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

int main() {
  int n, ai;
  cin >> n;

  ll s = 0, s2 = 0;
  for (int i = 0; i < n; i++) {
    cin >> ai;
    s += ai;
    s2 += ai * ai;
  }

  cout << n * s2 - s * s << '\n';
}

// ConsoleApplication1.cpp : このファイルには 'main' 関数が含まれています。プログラム実行の開始と終了がそこで行われます。
//

#include <iostream>
#include<vector>
using namespace std;

using ll =  long long;
void solve() {
	int N;
	cin >> N;
	vector<int> A(N);
	for (size_t i = 0; i < N; i++)
	{
		cin >> A[i];
	}
	int s = 0;
	vector<ll> as(N);
	ll ans = 0;
	for (size_t i = 0; i < N; i++)
	{
		s += A[i];
		as[i] = s;

		ans +=(ll) A[i] * A[i] * (N - 1);
	}
	for (size_t i = 0; i < N; i++)
	{		
		ans -=(ll) 2 * A[i] *  (s-as[i]);
	}

	cout << ans << endl;

}


void solve2() {
	int N;
	cin >> N;
	vector<int> A(N);
	for (size_t i = 0; i < N; i++)
	{
		cin >> A[i];
	}

	ll ans = 0;
	//Aの-200から+200までの範囲を0から400までの配列のindexに変換
	const int MaxA = 200;
	vector<int> ac(MaxA * 2 + 1, 0);
	for (size_t i = 0; i < N; i++)
	{
		/* TLE
		for (size_t j = 0; j < i ; j++)
		{
			ans += (ull)((A[i] - A[j]) * (A[i] - A[j]));
		}
		*/
		for (int aj = MaxA * -1; aj <= MaxA; aj++)
		{
			int c = ac[MaxA + aj];
			int d = A[i] - aj;
			//ans += (ll)(d * d * c); //WA overflow
			ans += (ll)d * d * c;
		} 
		ac[MaxA + A[i]]++;

	}
	cout << ans << endl;
}

int main()
{
	solve();
	return 0;
}

// プログラムの実行: Ctrl + F5 または [デバッグ] > [デバッグなしで開始] メニュー
// プログラムのデバッグ: F5 または [デバッグ] > [デバッグの開始] メニュー

// 作業を開始するためのヒント: 
//    1. ソリューション エクスプローラー ウィンドウを使用してファイルを追加/管理します 
//   2. チーム エクスプローラー ウィンドウを使用してソース管理に接続します
//   3. 出力ウィンドウを使用して、ビルド出力とその他のメッセージを表示します
//   4. エラー一覧ウィンドウを使用してエラーを表示します
//   5. [プロジェクト] > [新しい項目の追加] と移動して新しいコード ファイルを作成するか、[プロジェクト] > [既存の項目の追加] と移動して既存のコード ファイルをプロジェクトに追加します
//   6. 後ほどこのプロジェクトを再び開く場合、[ファイル] > [開く] > [プロジェクト] と移動して .sln ファイルを選択します
