#include <bits/stdc++.h>
#ifdef _WIN32
#define putchar_unlocked _putchar_nolock
#endif
#define pc putchar_unlocked(' ')
#define pe putchar_unlocked('\n')
namespace FastIO
{
const int MAX_BUF=1<<16;
char buf[MAX_BUF],*p1,*p2;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<16,stdin),p1==p2)?EOF:*p1++)
template<typename T>
inline void read(T &n)
{
T x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')f=(ch=='-'?-1:f),ch=getchar();
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
n=x*f;
}
template<typename T>
inline void write(T x)
{
if(x<0)putchar_unlocked('-'),x=-x;
if(x>9)write(x/10);
putchar_unlocked(x%10+'0');
}
}
using namespace FastIO;
using namespace std;
const int maxn=2e5+10;
const int maxp=2e5;
int n,m;
int ans[maxn];
vector<int> a[maxn];
struct borad
{
int l,r,k;
}bor[maxn];
struct sgt
{
int ls,rs,sum;
}t[maxn<<5];
int rt[maxn],cnt;
#define mid (l+r>>1)
inline void build(int &o,int l,int r)
{
o=++cnt;
if(l==r)return;
build(t[o].ls,l,mid);
build(t[o].rs,mid+1,r);
}
inline void change(int &o,int p,int l,int r,int idx)
{
t[o=++cnt]=t[p];++t[o].sum;
if(l==r)return;
if(idx<=mid)change(t[o].ls,t[p].ls,l,mid,idx);
else change(t[o].rs,t[p].rs,mid+1,r,idx);
}
inline int query(int o,int p,int l,int r,int k)
{
if(l==r)return l;
int x=t[t[p].ls].sum-t[t[o].ls].sum;
if(x>=k)return query(t[o].ls,t[p].ls,l,mid,k);
else return query(t[o].rs,t[p].rs,mid+1,r,k-x);
}
int main()
{
read(n),read(m);
for(int i=1;i<=n;i++)read(bor[i].l),read(bor[i].r),read(bor[i].k);
for(int i=1,x;i<=m;i++)read(x),a[x].push_back(i);
for(int i=1;i<=maxp;i++)if(a[i].empty())a[i].push_back(m+1);
for(int i=1;i<=maxp;i++)
{
rt[i]=rt[i-1];
for(int j:a[i])change(rt[i],rt[i-1],1,m+1,j);
}
for(int i=1;i<=n;i++)
{
int res=query(rt[bor[i].l-1],rt[bor[i].r],1,m+1,bor[i].k);
ans[res]++;
}
for(int i=1;i<=m;i++)write(ans[i]),pe;
fflush(stdout);
return 0;
}