#include <bits/stdc++.h>
using namespace std;
struct node
{
int s,e,v;
}u;
vector <node> mapp;
long long x[10005];
long long dis[10005];
long long n,m,b,xx;
bool flag=0;
bool cmp(int a,int b)
{
return a<b;
}
bool ford(int s)
{
if(x[s]<x[1]) return 0;
memset(dis,0x3f,sizeof dis);
dis[s]=0;
for(int i=1;i<n;i++)
{
for(int j=0;j<mapp.size();j++)
{
int ns=mapp[j].s;
int ne=mapp[j].e;
int nv=mapp[j].v;
if(dis[ns]+nv<dis[ne])
{
dis[ne]=dis[ns]+nv;
}
}
}
if(dis[n]<=b) return 1;
else return 0;
}
int main()
{
cin >> n >> m >> b;
for(int i=1;i<=n;i++)
{
cin >> x[i];
if(i==1) xx=x[i];
}
while(m--)
{
int a,b,c;
cin >> a >> b >> c;
u.s=a;
u.e=b;
u.v=c;
mapp.push_back(u);
u.s=b;
u.e=a;
u.v=c;
mapp.push_back(u);
}
sort(x+1,x+n+1,cmp);
int mid=0,l=1,r=n,ans=0;
while(l<=r)
{
mid=(r-l)/2+l;
if(ford(mid)==1)
{
r=mid-1;
ans=mid;
}
else l=mid+1;
}
if(ans==0) cout << "AFK";
else cout << ans;
return 0;
}