#include <bits/stdc++.h>
#include <map>
#include <algorithm>
#include <vector>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <chrono>
#include <thread>
#include <string.h>

#define rep(i,n)    for(ll i=0;i<n;i++)
#define repu(i,k,n) for(ll i=k;i<=n;i++)
#define repd(i,k,n) for(ll i=k;i>=n;i--)
#define se second
#define fi first
#define pb push_back
#define mp make_pair
#define endl "\n"
#define INF (ll)ll_MAX

typedef long long ll;
typedef long double ld;
typedef std::pair<ll, ll> pii;
typedef std::vector<ll> vi;
typedef std::vector< pii > vii;
typedef std::vector< ll > vll;
typedef std::vector< std::pair < pii, ll > > vpp;

const ll N = 3*1e5 +5 ;
const long long MOD = 1000000007;
const long long MOD2 = 998244353;
const long long inf = 1e18;

using namespace std;

set<int>m ; 
bool iseq(){
	if(m.size() == 1){
		return true ;
	}
	return false ;
}
void solve()
{
	int n ; 
	cin>>n ; 
	int a[n] ; 
	rep(i , n)cin>>a[i] ; 
	rep(i , n){
		m.insert(a[i]) ;
	}
	while(!iseq()){
		int st = *m.begin() ; 
		int en  = *m.rbegin() ; 
		m.erase(m.find(en)) ; 
		m.insert(en - st) ; 
	}
	int ans  =  *m.begin() ; 
	cout<<ans<<endl;
}
int main() {
    #ifndef ONLINE_JUDGE
        // for getting input from input.txt
        freopen("input.txt", "r", stdin);
        // for writing output to output.txt
        freopen("output.txt", "w", stdout);
    #endif
    //cout<<"helo";
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    ll t = 1;
    //cin>>t;

    while(t--)
    {
        solve();    
    } 
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";

}

#include <bits/stdc++.h>
#ifdef LILY
#include "Debug.h"
#else
#define var(...) (0)
#define dbg(...) (0)
#endif
using int32 = int;
using int64 = long long;
using namespace std;

class Solution
{
#define int int64
#define sfor(i, n) for (int i = 1; i <= (n); ++i)
#define tfor(i, n) for (int i = 0; i < (n); ++i)
#define INF 0x3f3f3f3f
#define EPS 1e-5
#define M 1000000007

    int n;
    int p;

    int pow(int base, int ex)
    {
        int ret = 1;
        while (ex)
        {
            if (ex & 1) ret = ret * base % M;
            ex >>= 1;
            base = base * base % M;
        }
        return ret;
    }

    void reals()
    {
    }

public:
    Solution()
    {
        cin >> n >> p;
        int t = pow(p - 2, n - 1);
        cout << t * (p - 1) % M << endl;
    }
#undef int
#undef tfor
#undef sfor
};

int32 main()
{
#ifdef LILY
    while (1)
#endif
        Solution();
    return 0;
}
