// Original C++ solution (slower):
#include<bits/stdc++.h>

#define bug puts("QWQ")

#define huan putchar('\n')

#define kong putchar(' ')

using namespace std;



inline void read(int  &x)

{

	int pd=1;

	register char ch=getchar();x=0;

	while(ch<'0'||ch>'9'){if(ch=='-')pd=-pd;ch=getchar();}

 	while(ch>='0'&&ch<='9'){x=(x*10+ch-'0');ch=getchar();}

 	x*=pd;

}



void write(int x)

{

	if(x<0)x=-x,putchar('-');

	if(x<10)putchar(x+'0');

	else write(x/10),putchar(x%10+'0');

}



inline void wrl(int x)

{

	write(x);

	puts("");

}



inline void wrs(int x)

{

	write(x);

	putchar(' ');

}



/*

¿¼ÂÇÃ»ÓÐÄÃ×ßÒ»¶ÑµÄ²Ù×÷£¬ÄÇÃ´ÏÈÊÖ±Ø°ÜµÄÌõ¼þÊÇMX(A[I])ÊÇÆæÊý



¿¼ÂÇÃ»ÓÐ¼õÒ»µÄ²Ù×÷£¬ÄÇÃ´ÏÈÊÖ±Ø°ÜµÄÌõ¼þÊÇNÊÇÆæÊý 

*/



const int N=1e5+233;

int n,a[N];

inline bool check()

{

    for(register int i=1;i<=n;++i)

    {

        if(a[i])return 1;

    }

    return 0;

}

bool dfs(int s)

{

    if(!check())

    {

        return 1;

    }

    

    bool flag=1;

    bool vis[20];

    memset(vis,0,sizeof(vis));

    for(register int i=1;i<=n;++i)

    {

        if(a[i])

        --a[i],vis[i]=1;

    }

    flag&=dfs(s+1);

    for(register int i=1;i<=n;++i)

    {

        if(vis[i])

        ++a[i],vis[i]=0;

    }

    int now;

    for(register int i=1;i<=n;++i)

    {

        if(a[i])

        {

            now=a[i];

            a[i]=0;

            flag&=dfs(s+1);

            a[i]=now;

            break;

        }

    }

    return flag^1;

}





int main()

{

//    freopen("t1.in","r",stdin);

//    freopen("t1.out","w",stdout);

	int T;

//	read(T);

//	while(T--)

	{

		memset(a,0,sizeof(a));

		read(n);

		for(register int i=1;i<=n;++i)

		{

			read(a[i]);

		}

		sort(a+1,a+n+1,greater<int> ());

		for(register int i=1;i<=n;++i)

		{

			if(i>=a[i+1])

			{

				int ans=0;

				for(register int j=i+1;a[j]==i;++j)ans^=1;

				if(ans||((a[i]-i)&1))puts("First");

				else puts("Second");

				break;

			}

		}

	}

    return 0;

}

// Optimized solution to the same problem (faster):
#include<bits/stdc++.h>

using namespace std;

#define res register int

#define LL long long

#define inf 0x3f3f3f3f

#define eps 1e-15

inline int read(){

    res s=0;

    bool w=0;

    char ch=getchar();

    while(ch<'0'||ch>'9'){if(ch=='-')w=1;ch=getchar();}

    while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();

    return w?-s:s;

}

inline void _swap(res &x,res &y){

    x^=y^=x^=y;

}

inline int _abs(const res &x){

    return x>0?x:-x;

}

inline int _max(const res &x,const res &y){

    return x>y?x:y;

}

inline int _min(const res &x,const res &y){

    return x<y?x:y;

}

const int N=1e5+10;

namespace MAIN{

    inline bool cmp(const res &x,const res &y){

        return x>y;

    }

    int n,a[N];

    inline void MAIN(){

        n=read();

        for(res i=1;i<=n;i++)a[i]=read();

        sort(a+1,a+n+1,cmp);

        for(res i=1;i<=n;i++)

            if(i+1>a[i+1]){

                res j=i+1,ans=0;

                while(a[j]==i)ans^=1,j++;

                if((ans||((a[i]-i)&1)))puts("First");

                else puts("Second");

                return;

            }

    }

}

int main(){

    MAIN::MAIN();

    return 0;

}

// Fastest known solution for this problem: