A的B次方求和再对M取余即可
数据较大 先取余再求和再取余结果也一样
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <map>
#include <string>
#include <set>
#include <stack>
#include<queue>
using namespace std;
#define forseach(i,j,n) for(int i=j;i<n;i++)
#define debug freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//#define PI acos(-1)
typedef long long ll;
const int maxn = 1e4+10;

ll mypow(ll x,ll y,int mod)
{
	ll ans=1;
	while(y)
	{
		if(y&1) ans=(x*ans)%mod;
		x=(x*x)%mod;
		y>>=1;
	}
	return ans;
}

int main()
{
	//debug;
	ios;
	int Z,M,H;
	ll A,B,ans;
	cin>>Z;
	while(Z--)
	{
		ans=0;
		cin>>M>>H;
		for(int i=1;i<=H;i++)
		{
			cin>>A>>B;
			ans+=mypow(A,B,M);
		}
		cout<<ans%M<<endl;
	}
    return 0;
}