#include <iostream>
using namespace std;
int main()
{
/*
liczbaTestow- liczba testow
nliczba - liczba pierwsza, znacznik pierscienia
kjeden - ilosc wspolczynnikow
wspDziel- dlougsc wielomianu przez ktory sie dzieli
*glowny- tablica zaweirajaca wspolczynniki wielomianu
*dzielony- tablica zawierajaca dzielniki wielomianu przez ktory sie dzieli
*wynik - tablica zawieracjaca wynik
*mnozeniaWynik - wynik mnozenia
*/
int liczbaTestow, nliczba, kjeden, wspDziel, glowny, dzielony, wynik, mnozeniaWynik;
cin>>liczbaTestow; //wprowadzam liczbe testow
for(int keppo=0; keppo<liczbaTestow; keppo++) //wykonuje dzialanie okreslona ilosc razy
{
cin>>nliczba; //wporwadzam znacznik pierscienia
cin>>kjeden; //podaje ilosc wspolczynnikow
int glowny[kjeden]; // tablica z funcja wielkosci funkcji bazowej
int mnozeniaWynik[kjeden];
for(int i=0; i<kjeden; i++) //zapisuje wspolczynniki
{
cin>>glowny[i];
}
cin>>wspDziel; //podaje liczbe wspolcznnikow dzielonego wileomanu
int dzielony[wspDziel]; //tworze tablice na wyniki ----
for(int i=0; i<wspDziel; i++) //zapisuje w niej wyniki
{
cin>>dzielony[i];
}
int wynik[kjeden-wspDziel+1]; // tworze tablice wyniku
for(int i=0; i<kjeden-wspDziel+1; i++) //przejezdza przez wiersze
{
for(int iWonder=0; iWonder<nliczba; iWonder++) // jedzie po pierscieniu
{
if(glowny[i]==dzielony[0]*iWonder%nliczba) // szuka dzielenia
{
wynik[i]=iWonder; // zapisuje wyraz pierscienia
}
}
for(int j=0; j<wspDziel; j++) // mnozy
{
mnozeniaWynik[j]=wynik[i]*dzielony[j]%nliczba;
}
for(int j=0; j<wspDziel; j++) //odejmuje je od siebie
{
if(0>glowny[j+i]-mnozeniaWynik[j])
{
glowny[j+i]=(glowny[j+i]-mnozeniaWynik[j])%nliczba+nliczba;
}
else
{
glowny[j+i]=(glowny[j+i]-mnozeniaWynik[j])%nliczba;
}
}
}
for(int i=0; i<kjeden-wspDziel+1; i++) //podaje odp
{
cout<<wynik[i];
}
cout<<endl;
for(int i=0; i<kjeden; i++)
{
if(glowny[i]!=0)
{
cout<<glowny[i];
}
}
// cout<<endl;
}
return 0;
}