#include<deque>
#include<queue>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
#include<cmath>
#include<tuple>
#include<string>
#include<chrono>
#include<functional>
#include<iterator>
#include<random>
#include<unordered_set>
#include<array>
#include<map>
#include<iomanip>
#include<assert.h>
#include<list>
#include<bitset>
#include<stack>
#include<memory>
#include<numeric>
using namespace std;
using namespace std::chrono;
typedef long long int llint;
typedef long double lldo;
#define mp make_pair
#define mt make_tuple
#define pub push_back
#define puf push_front
#define pob pop_back
#define pof pop_front
#define fir first
#define sec second
#define res resize
#define ins insert
#define era erase
#define REP(i, n) for(int i = 0;i < (n);i++)
/*cout<<fixed<<setprecision(20);cin.tie(0);ios::sync_with_stdio(false);*/
//const llint mod=1000000007;
const llint inf=2.19e18+1;
const long double pai=3.141592653589793238462643383279502884197;
const long double eps=1e-10;
template <class T,class U>bool chmin(T& a,U b){if(a>b){a=b;return true;}return false;}
template <class T,class U>bool chmax(T& a,U b){if(a<b){a=b;return true;}return false;}
llint gcd(llint a,llint b){if(a%b==0){return b;}else return gcd(b,a%b);}
llint lcm(llint a,llint b){if(a==0){return b;}return a/gcd(a,b)*b;}
template<class T> void SO(T& ve){sort(ve.begin(),ve.end());}
template<class T> void REV(T& ve){reverse(ve.begin(),ve.end());}
template<class T>llint LBI(const vector<T>&ar,T in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();}
template<class T>llint UBI(const vector<T>&ar,T in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();}
//memo   998244353  15311432   2^23*119
//		1004535809  702606812  2^21*479
const llint mod=(int)1004535809;

class FFT{
public:
	//vector<int>を受け取り、フーリエ変換して返します
	const llint sai=19;// (1<<21)これだけ使う
	const llint firoot=702606812 ;
	const llint syuki=21;//modによる元の周期
	llint root;
	vector<llint>pa;//root
	FFT(void){
		pa.res(1+(1<<sai));root=firoot;
		llint gen=1;
		for(int q=0;q<syuki-sai;q++){root*=root;root%=mod;}//これで周期が1減る
		for(int i=0;i<=(1<<sai);i++){pa[i]=gen;gen*=root;gen%=mod;}
		//任意のpowの配列を作った
	}
	vector<llint> do_fft(vector<llint> ans,bool debag=false){
		ans.res(1<<sai);
		int h,i,j;
		for(h=0;h<sai;h++){
			vector<llint>dp(1<<sai);
			int sa=(1<<(sai-h-1)),ban=0;
			for(i=0;i<(1<<sai);i+=sa*2){
				for(j=i;j<i+sa;j++){
					llint a=ans[j],b=ans[j+sa];
					dp[ban]=(a+b*pa[i/2])%mod;
					dp[ban+(1<<(sai-1))]=(a+b*pa[i/2+(1<<(sai-1))])%mod;
					ban++;
				}
				
			}
			swap(ans,dp);
		}
		return ans;
	}
	vector<llint> kake(vector<llint>a,vector<llint>b){
		for(int i=0;i<a.size();i++){a[i]*=b[i];a[i]%=mod;}
		return a;
	}
	vector<llint>rev_fft(vector<llint>ans){
		int h,i,j;
		llint gpa=1,bgen=pa[1<<(sai-1)]-1;//この逆元を求める
		for(h=0;h<30;h++){
			if((1<<h)&(mod-2)){gpa*=bgen;gpa%=mod;}
			bgen*=bgen;bgen%=mod;
		}
		for(h=sai-1;h>=0;h--){
			vector<llint>dp(1<<sai);
			swap(ans,dp);
			int sa=(1<<(sai-h-1)),ban=0;
			for(i=0;i<(1<<sai);i+=sa*2){
				for(j=i;j<i+sa;j++){
					llint b=((mod-dp[ban]+dp[ban+(1<<(sai-1))])*pa[(1<<sai)-i/2])%mod;
					b*=gpa;b%=mod;
					llint a=(mod*mod+dp[ban]-b*pa[i/2])%mod;
					ans[j]=a;ans[j+sa]=b;ban++;
				}
			}
		}
		return ans;
	}
};

int main(void){
	llint P=200003;
	llint i,j,n;cin>>n;
	llint ans=0;
	vector<int>kaz(P);
	while(n--){
		llint A;cin>>A;
		kaz[A]++;
		ans-=(A*A)%P;
	}
	kaz[0]=0;
	//同じ数が大量に来るとFFT壊れるから対策
	for(i=0;i<P;i++){
		if(3000<kaz[i]){
			ans-=((i*i)%P)*kaz[i]*kaz[i];
			for(j=0;j<P;j++){
				ans+=((i*j)%P)*kaz[i]*kaz[j]*2;
			}
			kaz[i]=0;
		}
	}
	//cerr<<"de"<<endl;
	//2 を原始根?にもつ
	vector<int>rui(P-1);
	llint gen=1;
	for(i=0;i<P-1;i++){
		rui[i]=gen;
		gen*=2;gen%=P;
	}
	//cerr<<"de"<<endl;
	FFT ee;
	vector<llint>gya(P);
	for(i=0;i<P-1;i++){gya[rui[i]]=i;}
	//cerr<<"rr"<<gya[3]<<endl;
	vector<llint>Gk(P-1);
	for(i=1;i<P;i++){Gk[gya[i]]=kaz[i];}
	//これを畳み込みます
	auto aaa=ee.do_fft(Gk);
	//cerr<<"de"<<endl;
	auto ret=ee.rev_fft(ee.kake(aaa,aaa));
	//cerr<<"de"<<endl;
	for(i=0;i<ret.size();i++){ans+=ret[i]*rui[i%(P-1)];}
	ans/=2;
	cout<<ans<<endl;
}


Measured memory_bytes: 27972