rt,玄关
#include<iostream>
using namespace std;
int v[300][300],d[300],s[300],f[300],ans=300,n,b;
void work(int dz,int xz)
{
if(v[dz][xz]==1) return;
else v[dz][xz]=1;
if(dz==n)
{
ans=min(ans,xz);
return;
}
for(int i=1;i<=d[xz];i++)
{
if(f[dz+i]<s[xz]&&dz+i<=n)
work(dz+i,xz);
}
for(int i=xz;i<=b;i++)
{
if(s[xz+i]>=f[dz]) work(dz,xz+1);
}
}
int main(){
cin>>n>>b;
for(int i=1;i<=n;i++) cin>>f[i];
for(int i=1;i<=b;i++) cin>>s[i]>>d[i];
work(1,0);
cout<<ans-1<<endl;
return 0;
}