#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
const int N(100009);
struct node{
    node *next;
    int no;
};
node* g[N]={0};
node* g2[N]={0};
int pri[N]={0},Bmin[N]={0},Smax[N]={0};
bool inq[N]={false};
queue<int> q;
void spfab(int x)
{   
    Bmin[x]=pri[x];
    q.push(x);
    inq[x]=true;
    while(!q.empty())
    {
        int x(q.front());
        q.pop();
        inq[x]=false;
        node *p(g[x]);
        while(p)
        {
            if(min(Bmin[x],pri[p->no])<Bmin[p->no])
            {
                Bmin[p->no]=min(Bmin[x],pri[x]);
                if(!inq[p->no])
                {
                    q.push(p->no);
                    inq[p->no]=true;
                }
            }
            p=p->next;
        }
    }
}
void spfas(int x)
{
    Smax[x]=pri[x];
    q.push(x);
    inq[x]=true;
    while(!q.empty())
    {
        int x(q.front());
        q.pop();
        inq[x]=false;
        node *p(g2[x]);
        while(p)
        {
            if(max(pri[p->no],Smax[x])>Smax[p->no])
            {
                Smax[p->no]=max(pri[p->no],Smax[x]);
                if(!inq[p->no])
                {
                    q.push(p->no);
                    inq[p->no]=true;
                }
            }
            p=p->next;
        }
    }
}
int main()
{   
    int n,m,ans(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>pri[i];
    int x,y,z;node *p;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y>>z;
        p=new(node);p->next=g[x];g[x]=p;p->no=y;
        p=new(node);p->next=g2[y];g2[y]=p;p->no=x;
        if(z==2)
        {
            p=new(node);p->next=g[y];g[y]=p;p->no=x;
            p=new(node);p->next=g2[x];g2[x]=p;p->no=y;
        }
    }
    fill(Bmin,Bmin+N,0x7fffffff);
    spfab(1);
    fill(inq,inq+N,false);
    spfas(n);
    for(int i=1;i<=n;i++)
        ans=max(ans,Smax[i]-Bmin[i]);
    cout<<ans<<endl;
    return 0;
}

/**************************************************************
	Problem: 2290
	User: admin
	Language: C++
	Result: Accepted
	Time:555 ms
	Memory:14412 kb
****************************************************************/