#include <bits/stdc++.h>
using namespace std;
//(1<<n)はオーバーフローすることがあるぞ！(1L<<n)にしような！

int main() {
  string sx,sy,sr;
  long x=0,y=0,r=0,ans=0;
  cin >> sx >> sy >> sr;
  long a=-1;
  for(long i=0;i<sx.size();i++) {
    if(a!=-1) x=x*10+(sx[i]-'0');
    if(sx[i]=='.') a=i;
  }
  if(a!=-1) for(long i=0;i<5-sx.size()+a;i++) x*=10;
  a=-1;
  for(long i=0;i<sy.size();i++) {
    if(a!=-1) y=y*10+(sy[i]-'0');
    if(sy[i]=='.') a=i;
  }
  if(a!=-1) for(long i=0;i<5-sy.size()+a;i++) y*=10;
  a=-1;
  for(long i=0;i<sr.size();i++) {
    if(sr[i]=='.') a=i;
    else r=r*10+(sr[i]-'0');
  }
  if(a!=-1) for(long i=0;i<5-sr.size()+a;i++) r*=10;
  else r*=10000;
  long ty=1000050000;
  for(long tx=10000;true;tx+=10000) {
    while(ty!=0) {
      if((tx-x)*(tx-x)+(ty-y)*(ty-y)<=r*r) break;
      else ty-=10000;
    }
    if(ty==0) break;
    ans+=ty/10000;
  }
  ty=1000050000;
  for(long tx=0;true;tx-=10000) {
    while(ty!=0) {
      if((tx-x)*(tx-x)+(ty-y)*(ty-y)<=r*r) break;
      else ty-=10000;
    }
    if(ty==0) break;
    ans+=ty/10000;
  }
  ty=-1000050000;
  for(long tx=10000;true;tx+=10000) {
    while(ty!=10000) {
      if((tx-x)*(tx-x)+(ty-y)*(ty-y)<=r*r) break;
      else ty+=10000;
    }
    if(ty==10000) break;
    ans-=(ty-10000)/10000;
  }
  ty=-1000050000;
  for(long tx=0;true;tx-=10000) {
    while(ty!=10000) {
      if((tx-x)*(tx-x)+(ty-y)*(ty-y)<=r*r) break;
      else ty+=10000;
    }
    if(ty==10000) break;
    ans-=(ty-10000)/10000;
  }
  cout << ans << endl;
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define sc(x) scanf("%lld",&(x));
#define pb push_back
#define fi first
#define se second
int A[55];
int P[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
int B[55];
int ans = -1;
int n;
void dfs(int x){
    if(x == 15){
        int y = 1;
        for(int i = 0; i < 15; i++){
            if(B[i]){
                y *= P[i];
            }
        }
        bool flag = true;
        for(int i = 0; i < n; i++){
            if(__gcd(A[i],y) == 1){
                flag = false;break;
            }
        }
        if(flag&& (y < ans|| ans == -1))ans = y;
        return;
    }
   B[x] = 0;
   dfs(x+1);
   B[x] = 1;
   dfs(x+1);
}
signed main()
{

    sc(n)
    for(int i = 0; i < n; i++)
    {
        sc(A[i])

    }
    dfs(0);
    cout << ans <<'\n';
}
