#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ull unsigned long long
using namespace std;
ull deal(ull a)
{
if(a == 2)return 1;
ull flag = 0;
while(a-1)
{
if(a%2)a--;
else(a /= 2);
flag++;
}
return flag;
}
ull map_[100010];//
ull sum[10010];
int main()
{
int k;
scanf("%d", &k);
ull m,n;
while(k--)
{//不把数组放在这定义,可以避免超时
memset(map_, 0, sizeof(map_));
memset(sum, 0, sizeof(sum));
ull t;
scanf("%llu%llu", &m, &n);
for(ull i = 1; i <= m; i++)
{
scanf("%llu", &t);
map_[i] = deal(t);
}
sum[1] = map_[1];
for(ull i = 2; i <= m; i++)
sum[i] = map_[i] + sum[i-1];
ull x, y;
while(n--)
{
scanf("%llu%llu", &x, &y);
printf("%llu\n", sum[y] - sum[x-1]);
}
}
return 0;
}