#include <bits/stdc++.h>

#define int long long
#define F first
#define S second
#define pb push_back
#define pii pair<int,int>

using namespace std;

const int MX=2e5+9;
vector <pii> road[MX];
int a[MX];

int f(int x){
    int ans=0;
    int maxx=-1;
    for(int i=0;i<MX;i++){
        for(int j=0;j<road[i].size();j++){
            pii a=road[i][j];
            if(a.S>x){
                maxx=max(maxx,a.F);
            }
        }
        if(i<=maxx){
            ans+=2;
        }
    }
    return ans;
}

int BS(int n,int m,int t){
    int l=0,r=m+1;
    while(l+1<r){
        int mid=(l+r)/2;
        if(f(a[mid])+n+1<=t){
            l=mid;
        }
        else{
            r=mid;
        }
    }
    return l;
}

int32_t main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int m,n,k,t;
    cin>>m>>n>>k>>t;
    for(int i=1;i<=m;i++){
        cin>>a[i];
    }
    a[0]=1e9;
    sort(a+1,a+m+1);
    reverse(a+1,a+m+1);
    for(int i=0;i<k;i++){
        int l,r,d;
        cin>>l>>r>>d;
        road[l].pb({r,d});
    }
    cout<<BS(n,m,t);
    return 0;
}
