#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll,ll>
#define f first
#define s second
using namespace std;
const ll N=1e4+10,inf=0x3f3f3f3f;
ll n,m,b,f[N],dis[N],u,v,w,cnt,l,r,mid,mi=9e18;
bool vis[N];
vector<pll> e[N];
priority_queue<pll,vector<pll>,greater<pll> >q;
bool dijcheck(ll mid){
memset(dis,inf,sizeof dis);
memset(vis,0,sizeof vis);
while(!q.empty()) q.pop();
q.push({0,1});
while(!q.empty()){
cnt=q.top().f,u=q.top().s;
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(ll i=0;i<e[u].size();i++){
v=e[u][i].s,w=e[u][i].f;
if(dis[v]>=w+cnt&&f[v]<=mid){
dis[v]=w+cnt;
q.push({w+cnt,v});
}
}
}
if(dis[n]<=b&&f[n]<=mid){
return 1;
}else{
return 0;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>b;
for(ll i=1;i<=n;i++){
cin>>f[i];
}
for(ll i=1;i<=m;i++){
cin>>u>>v>>w;
e[u].push_back({w,v});
e[v].push_back({w,u});
}
l=f[1]-1,r=1e9;
while(l<=r){
mid=l+r>>1;
if(dijcheck(mid)){
mi=min(mi,mid);
r=mid-1;
}else{
l=mid+1;
}
}
if(mi==9e18){
cout<<"AFK";
}else{
cout<<mid;
}
return 0;
}