#include "bits/stdc++.h"
//#include <boost/multi_array.hpp>
//#include <boost/optional.hpp>
//#include <boost/range/irange.hpp>
//#include <boost/range/algorithm.hpp>
//#include <boost/range/adaptors.hpp>
using namespace std;
using ll = long long;
using ld = long double;
using P = pair<int, int>;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep2(i, x, n) for (int i = x; i < (n); i++)
#define all(n) begin(n), end(n)
struct cww {
    cww() {
        ios::sync_with_stdio(false);
        cin.tie(0);
    }
} star;
const long long INF = numeric_limits<long long>::max();

long long gcd(long long a, long long b) { // 2つの場合の最大公約数
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}

long long gcd_vec(vector<long long> const &A) { // N個の要素に対する最大公約数
    int size = (int)A.size();
    long long ret = A[0];
    for (int i = 1; i < size; i++) {
        ret = gcd(ret, A[i]);
    }
    return ret;
}

void Main() {  //う　し　た　ぷ　に　き　あ　く　ん　笑
    int n;
    cin >> n;
    vector<long long> a(n);
    rep(i, n) { cin >> a[i]; }
    cout << gcd_vec(a) << endl;
}  //う　し　た　ぷ　に　き　あ　く　ん　笑

int main() {
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);
    std::cout << std::fixed << std::setprecision(15);
    Main();
    return 0;
}
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp>
#define ll long long int
#define ld long double
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define mem(x,y) memset(x,y,sizeof(x))
#define pii pair<int,int>
#define pll pair<ll,ll>
#define INF 1e9
#define INFL 1e18
#define mod 1000000007
//#define mod 998244353
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
using namespace __gnu_pbds; 
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> os;
typedef tree<pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update> os_pair;

ll power(ll x,ll n){ll res =1;while(n>0){if(n%2==1){res=res*x;}x=x*x;n=n/2;}return res;}
ll powm(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}

//cout<< fixed << setprecision(10)
//__builtin_popcountll()



int main(){

    fast;
    int n,i,j;
    cin>>n;
    int a[n];
    set<int>s;
    for(i=0;i<n;i++)
    {
    	cin>>a[i];
    	s.insert(a[i]);
	}
	int x;
	while(s.size()>1)
	{
		set<int>p;
		set<int>::iterator it;
		
		for(it=s.begin();it!=s.end();it++)
		{
			if(it==s.begin())
			{
				x=*it;
				p.insert(x);
			}
			else
			{
				if(*it%x!=0)
				p.insert(*it%x);
				
			}
		}
		s=p;
	}
	cout<<*s.begin();
	
    
    
    
    
}