#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1e9 + 5;
int n, m, b;
ll d[100001];
bool vis[100001] = {};
map<int, ll> c[100001];
ll f[100001];
void add()
{
int u, v;
ll l;
cin >> u >> v >> l;
if (l >= b)
{
return;
}
if (u == v)
{
return;
}
c[u][v] = l;
c[v][u] = l;
}
void init()
{
for (int i = 0; i <= n; i++)
{
d[i] = INF;
}
d[1] = f[1];
}
void dijkstra()
{
for (int i = 1; i <= n; i++)
{
int mink = 0;
for (int j = 1; j <= n; j++)
{
if (!vis[j] && d[j] <= d[mink])
{
mink = j;
}
}
vis[mink] = true;
for (auto &iter : c[mink])
{
if (max(d[mink], f[iter.first]) < d[iter.first])
{
d[iter.first] = max(d[mink], f[iter.first]);
}
}
}
}
void print()
{
if (d[n] == INF)
{
cout << "AFK" << endl;
}
else
{
cout << d[n] << endl;
}
}
int main()
{
ios::sync_with_stdio(false);
cin >> n >> m >> b;
for (int i = 1; i <= n; i++)
{
cin >> f[i];
}
if(n == 1) {
cout << 0 << endl;
return 0;
}
for (int i = 1; i <= m; i++)
{
add();
}
init();
dijkstra();
print();
return 0;
}
