#include<bits/stdc++.h>
#define MAXN 10010
using namespace std;
using ll=long long;
ll n,m,b;
typedef pair<int,int> pii;
vector<pii> e[MAXN];
ll s[MAXN];
ll dis[MAXN];
bool vis[MAXN];
bool dij(ll bl){
memset(vis,0,sizeof vis);
memset(dis,0x3f3f3f,sizeof dis);
dis[1]=0;
priority_queue<pii,vector<pii>,greater<pii>> pq;
pq.push({0,1});
while(!pq.empty()){
pii x;
x=pq.top();pq.pop();
int u=x.second;
if(vis[u]) continue;
vis[u]=1;
for(auto vv:e[u]){
int v=vv.first;ll w=vv.second;
if(s[v]>bl) continue;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
if(!vis[v]) pq.push({dis[v],v});
}
}
}
return dis[n]<=b;
}
int main(){
ll l=0,r=0;
cin >> n >> m >> b;
for(int i=1;i<=n;i++){
cin >> s[i];
r=max(r,s[i]);
}
l=max(s[1],s[n]);
for(int i=1;i<=m;i++){
ll u,v,w;
cin >> u >> v >> w;
e[u].push_back({v,w});
e[v].push_back({u,w});
}
while(l<r){
ll mid=(l+r)>>1ll;
if(dij(mid)) r=mid-1;
else l=mid+1;
}
if(!dij(r)) cout << "AFK";
else cout << r;
return 0;
}