//By Jaskaran.Finding first k digits of N^N
//Includes
#include<iostream>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <utility> //Pair
#include <algorithm>
#include <sstream> // istringstream>> ostring stream<<
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include<cassert>
using namespace std;
typedef long long ll;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<ii> vii;
typedef vector<vii> vvii;
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define rep(i,c,n) for(int i=c;i<n;i++)
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
const int p[10]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
/* This function calculates (a^b)%MOD */
ll power(int a, int b, int MOD)
{ ll x=1,y=a;
while(b > 0)
{
if(b%2 == 1)
{
x=(x*y);
if(x>MOD) x%=MOD;
}
y = (y*y);
if(y>MOD) y%=MOD;
b /= 2;
}
return x;
}
ll firstkdig(int N,int K)
{long double a=N*log10l(N);//a=R+f where f is the fractional part
ll R=floor(a);
long double f=a-R;//Since n^n=10^a=10^R*10^f 10^R doesn't decide the first k digits.its only 10^f which decides first k digits
ll ans=floor(pow((long double)10,f+K-1));//as 10^f is a single digit
return ans;}
ll lastkdig(int N,int K)//N^N%(10^K+1)
{
int MOD=p[K];
ll ans=power(N,N,MOD);
return ans;
}
int len(int num)
{int c=0;
if(num==0)
return 1;
while(num!=0)
{num/=10;
c++;}
return c;
}
int main()
{int T,N,K;
scanf("%d",&T);
while(T--)
{scanf("%d%d",&N,&K);
ll ans1=firstkdig(N,K);
ll ans2=lastkdig(N,K);
printf("%lld ",ans1);
int l=len(ans2);//number of digits in ans2.This is to correct output in cases where the number of digits in ans2<K.We have to fix leading zeroes
rep(i,0,K-l)
printf("0");
printf("%lld\n",ans2);
}
return 0;
}
Ly9CeSBKYXNrYXJhbi5GaW5kaW5nIGZpcnN0IGsgZGlnaXRzIG9mIE5eTgovL0luY2x1ZGVzCiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPiAKI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8bWFwPiAKI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHV0aWxpdHk+IC8vUGFpcgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3N0cmVhbT4gLy8gaXN0cmluZ3N0cmVhbT4+IG9zdHJpbmcgc3RyZWFtPDwKI2luY2x1ZGUgPGlvc3RyZWFtPiAKI2luY2x1ZGUgPGlvbWFuaXA+IAojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZTxjYXNzZXJ0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gaWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPGJvb2w+IHZiOwp0eXBlZGVmIHZlY3RvcjxpaT4gdmlpOwp0eXBlZGVmIHZlY3Rvcjx2aWk+IHZ2aWk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSByZXAoaSxjLG4pIGZvcihpbnQgaT1jO2k8bjtpKyspCiNkZWZpbmUgTUFYKGEsYikgKChhKT4oYik/KGEpOihiKSkKI2RlZmluZSBNSU4oYSxiKSAoKGEpPChiKT8oYSk6KGIpKQogCmNvbnN0IGludCBwWzEwXT17MSwxMCwxMDAsMTAwMCwxMDAwMCwxMDAwMDAsMTAwMDAwMCwxMDAwMDAwMCwxMDAwMDAwMDAsMTAwMDAwMDAwMH07Ci8qIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyAoYV5iKSVNT0QgKi8KbGwgcG93ZXIoaW50IGEsIGludCBiLCBpbnQgTU9EKQp7IGxsIHg9MSx5PWE7IAoJd2hpbGUoYiA+IDApCgl7CgkJaWYoYiUyID09IDEpCgkJewoJCQl4PSh4KnkpOwoJCQlpZih4Pk1PRCkgeCU9TU9EOwoJCX0KCQl5ID0gKHkqeSk7CgkJaWYoeT5NT0QpIHklPU1PRDsgCgkJYiAvPSAyOwoJfQoJcmV0dXJuIHg7Cn0KbGwgZmlyc3RrZGlnKGludCBOLGludCBLKQp7bG9uZyBkb3VibGUgYT1OKmxvZzEwbChOKTsvL2E9UitmIHdoZXJlIGYgaXMgdGhlIGZyYWN0aW9uYWwgcGFydAogbGwgUj1mbG9vcihhKTsKIGxvbmcgZG91YmxlIGY9YS1SOy8vU2luY2Ugbl5uPTEwXmE9MTBeUioxMF5mIDEwXlIgZG9lc24ndCBkZWNpZGUgdGhlIGZpcnN0IGsgZGlnaXRzLml0cyBvbmx5IDEwXmYgd2hpY2ggZGVjaWRlcyBmaXJzdCBrIGRpZ2l0cwogbGwgYW5zPWZsb29yKHBvdygobG9uZyBkb3VibGUpMTAsZitLLTEpKTsvL2FzIDEwXmYgaXMgYSBzaW5nbGUgZGlnaXQKIHJldHVybiBhbnM7fQogCmxsIGxhc3RrZGlnKGludCBOLGludCBLKS8vTl5OJSgxMF5LKzEpCnsKIGludCBNT0Q9cFtLXTsKIGxsIGFucz1wb3dlcihOLE4sTU9EKTsKIHJldHVybiBhbnM7Cn0KaW50IGxlbihpbnQgbnVtKQp7aW50IGM9MDsKaWYobnVtPT0wKQpyZXR1cm4gMTsKd2hpbGUobnVtIT0wKQp7bnVtLz0xMDsKIGMrKzt9CiByZXR1cm4gYzsKfQppbnQgbWFpbigpCntpbnQgVCxOLEs7CnNjYW5mKCIlZCIsJlQpOwp3aGlsZShULS0pCntzY2FuZigiJWQlZCIsJk4sJkspOwogbGwgYW5zMT1maXJzdGtkaWcoTixLKTsKIGxsIGFuczI9bGFzdGtkaWcoTixLKTsKIHByaW50ZigiJWxsZCAiLGFuczEpOwogaW50IGw9bGVuKGFuczIpOy8vbnVtYmVyIG9mIGRpZ2l0cyBpbiBhbnMyLlRoaXMgaXMgdG8gY29ycmVjdCBvdXRwdXQgaW4gY2FzZXMgd2hlcmUgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gYW5zMjxLLldlIGhhdmUgdG8gZml4IGxlYWRpbmcgemVyb2VzCiAgcmVwKGksMCxLLWwpCiAgcHJpbnRmKCIwIik7CiBwcmludGYoIiVsbGRcbiIsYW5zMik7Cn0KcmV0dXJuIDA7Cn0g