#include <cstdio>
typedef long long lint;
int const N=1e5+10;
int n,a[N];
int gcd(int x,int y)
{
    if(x==-1 || y==-1) return -x*y;
    if(x==0) return y;
    else return gcd(y%x,x);
}
int g1[N],g2[N];
int main()
{
    scanf("%d",&n);
    lint sum=0;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]),sum+=a[i];
    if(n%2==0)
    {
        if(sum%2==1) printf("First");
        else printf("Second");
        return 0;
    }
    if(sum%2==0) {printf("First"); return 0;}
    int cur=0;
    while(true)
    {
        bool flag=false;
        sum=0;
        for(int i=1;i<=n;i++) sum+=a[i];
        g1[0]=-1; g2[n+1]=-1;
        for(int i=2;i<=n;i++) g1[i]=gcd(g1[i-1],a[i]);
        for(int i=n-1;i>=1;i--) g2[i]=gcd(g2[i+1],a[i]);
        int g;
        for(int i=1;i<=n&&!flag;i++)
        {
            if(a[i]==1) continue;
            g=gcd(gcd(g1[i-1],g2[i+1]),a[i]-1);
            if(((sum-1)/g)%2==1) flag=true;
        }
        if(flag)
            for(int i=1;i<=n;i++) a[i]/=g;
        else
        { 
            if(cur==0) printf("Second");
            else printf("First");
            return 0; 
        } 
        cur^=1;
    }
    return 0;
}
#include <cstdio>
#include <cstring>
#include <algorithm>

inline int read()
{
	int data = 0, w = 1;
	char ch = getchar();
	while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
	if (ch == '-') w = -1, ch = getchar();
	while (ch >= '0' && ch <= '9') data = data * 10 + (ch ^ 48), ch = getchar();
	return data * w;
}

const int N(100010);
int a[N], cnt[2], n;

void trans()
{
	for (int i = 1; i <= n; i++) if (a[i] & 1) --a[i]; int g = a[1];
	for (int i = 2; i <= n; i++) g = std::__gcd(g, a[i]);
	for (int i = 1; i <= n; i++) a[i] /= g;
}

int check()
{
	cnt[0] = cnt[1] = 0;
	for (int i = 1; i <= n; i++) ++cnt[a[i] & 1];
	if (cnt[0] & 1) return 1; else if (cnt[1] > 1) return 0;
	else
	{
		for (int i = 1; i <= n; i++) if (a[i] == 1) return cnt[0] & 1;
		return trans(), check() ^ 1;
	}
}

int main()
{
	n = read();
	for (int i = 1; i <= n; i++) a[i] = read();
	puts(check() ? "First" : "Second");
	return 0;
}
