#include <bits/stdc++.h>
using namespace std;
int n, q;
int a, b, x;
int nam[100001], nu[1000001], gay[100001];
void nhap()
{
cin>>n>>q;
for (int i = 1; i<=n;i++)
{
cin>>x;
if (x==1) nam[i]=nam[i-1]+1;
else nam[i]=nam[i-1];
if (x==2) nu[i]=nu[i - 1]+1;
else nu[i]=nu[i - 1];
if (x==3) gay[i] = gay[i-1]+1;
else gay[i]=gay[i-1];
}
}
void xuLi()
{
for (int i = 1; i <= q; i++)
{
cin>>a>>b;
cout<<(nam[b]-nam[a-1])<<" "<<(nu[b]-nu[a-1])<<" "<<(gay[b]-gay[a-1])<<endl;
}
}
int main()
{
nhap();
xuLi();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgcTsKaW50IGEsIGIsIHg7CmludCBuYW1bMTAwMDAxXSwgbnVbMTAwMDAwMV0sIGdheVsxMDAwMDFdOwoKdm9pZCBuaGFwKCkKewogICAgY2luPj5uPj5xOwogICAgZm9yIChpbnQgaSA9IDE7IGk8PW47aSsrKQogICAgewogICAgICAgIGNpbj4+eDsKICAgICAgICBpZiAoeD09MSkgbmFtW2ldPW5hbVtpLTFdKzE7CiAgICAgICAgZWxzZSBuYW1baV09bmFtW2ktMV07CgogICAgICAgIGlmICh4PT0yKSBudVtpXT1udVtpIC0gMV0rMTsKICAgICAgICBlbHNlIG51W2ldPW51W2kgLSAxXTsKCiAgICAgICAgaWYgKHg9PTMpIGdheVtpXSA9IGdheVtpLTFdKzE7CiAgICAgICAgZWxzZSBnYXlbaV09Z2F5W2ktMV07CiAgICB9Cn0Kdm9pZCB4dUxpKCkKewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgewogICAgICAgIGNpbj4+YT4+YjsKICAgICAgICBjb3V0PDwobmFtW2JdLW5hbVthLTFdKTw8IiAiPDwobnVbYl0tbnVbYS0xXSk8PCIgIjw8KGdheVtiXS1nYXlbYS0xXSk8PGVuZGw7CiAgICB9Cn0KaW50IG1haW4oKQp7CiAgICBuaGFwKCk7CiAgICB4dUxpKCk7CiAgICByZXR1cm4gMDsKfQ==