#include <bits/stdc++.h>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
string tabWyrazow[100];
string str;
int iloscWyrazow = 0;
int konwersja = 0;
int tabIntow[100];
int t,n;
void usunSpacje(string str)
{
int j=0;
string wyraz;
char x;
for (int i=0; i<=str.length(); x=str[i++])
{
if (x != ' ')
{
wyraz += x;
}
else
{
tabWyrazow[j] = wyraz;
wyraz = " ";
j++;
iloscWyrazow = j;
}
}
if (wyraz.length() != 0)
tabWyrazow[iloscWyrazow++] = wyraz;
}
void wyswietlLiczby(int iloscWyrazow)
{
for (int i=0; i<iloscWyrazow; i++)
{
cout << "str: ["<< i <<"]: " << tabWyrazow[i] << endl;
}
}
void konwertujNaInt(int iloscWyrazow)
{
for ( int i=0; i<iloscWyrazow; i++)
{
string temp = "";
temp = tabWyrazow[i];
istringstream iss (temp);
iss >> konwersja;
tabIntow[i] = konwersja;
}
}
void wypiszNaOdwrot(int iloscWyrazow)
{
for (int i=iloscWyrazow-1; i>=0; i--)
{
cout <<tabIntow[i]<<" ";
}
cout << endl;
}
int main()
{
string str;
cin >> t;
for (int i=0; i<t; i++)
{
cin >> iloscWyrazow;
cin.ignore();
getline (cin,str);
usunSpacje(str);
//wyswietlLiczby(iloscWyrazow);
konwertujNaInt(iloscWyrazow);
wypiszNaOdwrot(iloscWyrazow);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgdGFiV3lyYXpvd1sxMDBdOwpzdHJpbmcgc3RyOwppbnQgaWxvc2NXeXJhem93ID0gMDsKaW50IGtvbndlcnNqYSA9IDA7CmludCB0YWJJbnRvd1sxMDBdOwppbnQgdCxuOwoKdm9pZCB1c3VuU3BhY2plKHN0cmluZyBzdHIpCnsKICAgaW50IGo9MDsKICAgc3RyaW5nIHd5cmF6OwogICBjaGFyIHg7CiAgIGZvciAoaW50IGk9MDsgaTw9c3RyLmxlbmd0aCgpOyB4PXN0cltpKytdKQogICB7CiAgICAgICBpZiAoeCAhPSAnICcpCiAgICAgICB7CiAgICAgICAgICAgd3lyYXogKz0geDsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKICAgICAgICAgICB0YWJXeXJhem93W2pdID0gd3lyYXo7CiAgICAgICAgICAgd3lyYXogPSAiICI7CiAgICAgICAgICAgaisrOwogICAgICAgICAgIGlsb3NjV3lyYXpvdyA9IGo7CiAgICAgICB9CiAgIH0KICAgaWYgKHd5cmF6Lmxlbmd0aCgpICE9IDApCiAgICAgICB0YWJXeXJhem93W2lsb3NjV3lyYXpvdysrXSA9IHd5cmF6Owp9Cgp2b2lkIHd5c3dpZXRsTGljemJ5KGludCBpbG9zY1d5cmF6b3cpCnsKICAgIGZvciAoaW50IGk9MDsgaTxpbG9zY1d5cmF6b3c7IGkrKykKICAgICAgICB7CiAgICAgICAgY291dCA8PCAic3RyOiBbIjw8IGkgPDwiXTogIiA8PCB0YWJXeXJhem93W2ldIDw8IGVuZGw7CiAgICAgICAgfQp9Cgp2b2lkIGtvbndlcnR1ak5hSW50KGludCBpbG9zY1d5cmF6b3cpCnsKICAgIGZvciAoIGludCBpPTA7IGk8aWxvc2NXeXJhem93OyBpKyspCiAgICB7CiAgICAgICAgc3RyaW5nIHRlbXAgPSAiIjsKICAgICAgICB0ZW1wID0gdGFiV3lyYXpvd1tpXTsKICAgICAgICBpc3RyaW5nc3RyZWFtIGlzcyAodGVtcCk7CiAgICAgICAgaXNzID4+IGtvbndlcnNqYTsKICAgICAgICB0YWJJbnRvd1tpXSA9IGtvbndlcnNqYTsKCiAgICB9Cn0KCnZvaWQgd3lwaXN6TmFPZHdyb3QoaW50IGlsb3NjV3lyYXpvdykKewogICAgZm9yIChpbnQgaT1pbG9zY1d5cmF6b3ctMTsgaT49MDsgaS0tKQogICAgICAgIHsKICAgICAgICBjb3V0ICA8PHRhYkludG93W2ldPDwiICI7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKQp7CgogICAgc3RyaW5nIHN0cjsKCiAgICBjaW4gPj4gdDsKICAgIGZvciAoaW50IGk9MDsgaTx0OyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGlsb3NjV3lyYXpvdzsKICAgICAgICBjaW4uaWdub3JlKCk7CiAgICAgICAgZ2V0bGluZSAoY2luLHN0cik7CiAgICAgICAgdXN1blNwYWNqZShzdHIpOwogICAgICAgIC8vd3lzd2lldGxMaWN6YnkoaWxvc2NXeXJhem93KTsKICAgICAgICBrb253ZXJ0dWpOYUludChpbG9zY1d5cmF6b3cpOwogICAgICAgIHd5cGlzek5hT2R3cm90KGlsb3NjV3lyYXpvdyk7CiAgICB9CgpyZXR1cm4gMDsKfQ==