#include<bits/stdc++.h>
using namespace std;
int n; //number of elements in a test case
int arr[10000]; // array to store preorder traversal
int ans[10000]; // array to store postorder traversal in reverse order
int k=0; // index in ans[] array
bool ans_no = 0; // this boolean variable will be set if answer does not exist for a test case
// returns,
// index of an element in array-range [s...e] which is greater than "ele"
// if not exist then -1
// also checks for preorder correctness
int indexof(int s, int e, int ele)
{
int ret=-1;
// finding index
for(int i=s; i<=e;i++){
if(arr[i]>ele){
ret=i;
break;
}
}
if(ret==-1) return ret;
// checking all element in range [s+1...ret-1] are lesser
// if not then set "ans_no"
for(int i=s+1; i<=ret-1; i++){
if(arr[i]>ele){
ans_no=1;
return ret;
}
}
// checking all element in range [ret...e] are greater
// if not then set "ans_no"
for(int i=ret; i<=e; i++){
if(arr[i]<ele){
ans_no=1;
return ret;
}
}
return ret;
}
void postorder(int l, int r)
{
// if indices are beyond boundary
if(l<0 || r>=n || l>r) return;
// storing leftmost element (i.e. at index = l ) in ans[] array
ans[k++] = arr[l];
// if l==r then no need to recurse
if(l==r){
return;
}
// finding index of an element in array-range [l+1...r] which is greater than arr[l]
int ind = indexof(l+1, r, arr[l]);
// if ans dose not exist then return
if(ans_no) return;
// if "ind" is set then
// recurse of right part first i.e. postorder(ind, r);
// then for left part i.e. postorder(l+1, ind-1);
// else if ind==-1
// then recurse for remaining whole part i.e. postorder(l+1, r);
// this would occur if a node in BST does not have left of right child.
if(ind!=-1){
postorder(ind, r);
postorder(l+1, ind-1);
}
else{
postorder(l+1, r);
}
}
void solve()
{
// resetting global variables
ans_no=0;
k=0;
// scanning input
cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i];
}
// call to postorder
postorder(0, n-1);
// if ans doesn't exist, print NO, and return
if(ans_no){
cout<<"NO"<<endl;
return;
}
// print ans
for(int i=k-1;i>=0;i--){
cout<<ans[i]<<" ";
}
cout<<endl;
}
int main()
{
ios_base::sync_with_stdio(0);
int t=1; cin>>t;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuOyAvL251bWJlciBvZiBlbGVtZW50cyBpbiBhIHRlc3QgY2FzZQppbnQgYXJyWzEwMDAwXTsgLy8gYXJyYXkgdG8gc3RvcmUgcHJlb3JkZXIgdHJhdmVyc2FsCmludCBhbnNbMTAwMDBdOyAvLyBhcnJheSB0byBzdG9yZSBwb3N0b3JkZXIgdHJhdmVyc2FsIGluIHJldmVyc2Ugb3JkZXIKaW50IGs9MDsgLy8gaW5kZXggaW4gYW5zW10gYXJyYXkKYm9vbCBhbnNfbm8gPSAwOyAvLyB0aGlzIGJvb2xlYW4gdmFyaWFibGUgd2lsbCBiZSBzZXQgaWYgYW5zd2VyIGRvZXMgbm90IGV4aXN0IGZvciBhIHRlc3QgY2FzZQoKLy8gIHJldHVybnMsCi8vICBpbmRleCBvZiBhbiBlbGVtZW50IGluIGFycmF5LXJhbmdlIFtzLi4uZV0gd2hpY2ggaXMgZ3JlYXRlciB0aGFuICJlbGUiCi8vICBpZiBub3QgZXhpc3QgdGhlbiAtMQovLyAgYWxzbyBjaGVja3MgZm9yIHByZW9yZGVyIGNvcnJlY3RuZXNzCmludCBpbmRleG9mKGludCBzLCBpbnQgZSwgaW50IGVsZSkKewogICAgaW50IHJldD0tMTsKCiAgICAvLyBmaW5kaW5nIGluZGV4CiAgICBmb3IoaW50IGk9czsgaTw9ZTtpKyspewogICAgICAgIGlmKGFycltpXT5lbGUpewogICAgICAgICAgICByZXQ9aTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGlmKHJldD09LTEpIHJldHVybiByZXQ7CgogICAgLy8gY2hlY2tpbmcgYWxsIGVsZW1lbnQgaW4gcmFuZ2UgW3MrMS4uLnJldC0xXSBhcmUgbGVzc2VyCiAgICAvLyBpZiBub3QgdGhlbiBzZXQgImFuc19ubyIKICAgIGZvcihpbnQgaT1zKzE7IGk8PXJldC0xOyBpKyspewogICAgICAgIGlmKGFycltpXT5lbGUpewogICAgICAgICAgICBhbnNfbm89MTsKICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9CiAgICB9CgogICAgLy8gY2hlY2tpbmcgYWxsIGVsZW1lbnQgaW4gcmFuZ2UgW3JldC4uLmVdIGFyZSBncmVhdGVyCiAgICAvLyBpZiBub3QgdGhlbiBzZXQgImFuc19ubyIKICAgIGZvcihpbnQgaT1yZXQ7IGk8PWU7IGkrKyl7CiAgICAgICAgaWYoYXJyW2ldPGVsZSl7CiAgICAgICAgICAgIGFuc19ubz0xOwogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcmV0Owp9Cgp2b2lkIHBvc3RvcmRlcihpbnQgbCwgaW50IHIpCnsKICAgIC8vIGlmIGluZGljZXMgYXJlIGJleW9uZCBib3VuZGFyeQogICAgaWYobDwwIHx8IHI+PW4gfHwgbD5yKSByZXR1cm47CgogICAgLy8gc3RvcmluZyBsZWZ0bW9zdCBlbGVtZW50IChpLmUuIGF0IGluZGV4ID0gbCApIGluIGFuc1tdIGFycmF5CiAgICBhbnNbaysrXSA9IGFycltsXTsKCiAgICAvLyBpZiBsPT1yIHRoZW4gbm8gbmVlZCB0byByZWN1cnNlCiAgICBpZihsPT1yKXsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gZmluZGluZyBpbmRleCBvZiBhbiBlbGVtZW50IGluIGFycmF5LXJhbmdlIFtsKzEuLi5yXSB3aGljaCBpcyBncmVhdGVyIHRoYW4gYXJyW2xdCiAgICBpbnQgaW5kID0gaW5kZXhvZihsKzEsIHIsIGFycltsXSk7CgogICAgLy8gaWYgYW5zIGRvc2Ugbm90IGV4aXN0IHRoZW4gcmV0dXJuCiAgICBpZihhbnNfbm8pIHJldHVybjsKCiAgICAvLyBpZiAiaW5kIiBpcyBzZXQgdGhlbgogICAgLy8gICAgICByZWN1cnNlIG9mIHJpZ2h0IHBhcnQgZmlyc3QgaS5lLiBwb3N0b3JkZXIoaW5kLCByKTsKICAgIC8vICAgICAgdGhlbiBmb3IgbGVmdCBwYXJ0IGkuZS4gIHBvc3RvcmRlcihsKzEsIGluZC0xKTsKICAgIC8vIGVsc2UgaWYgaW5kPT0tMQogICAgLy8gICAgICB0aGVuIHJlY3Vyc2UgZm9yIHJlbWFpbmluZyB3aG9sZSBwYXJ0IGkuZS4gcG9zdG9yZGVyKGwrMSwgcik7CiAgICAvLyAgICAgIHRoaXMgd291bGQgb2NjdXIgaWYgYSBub2RlIGluIEJTVCBkb2VzIG5vdCBoYXZlIGxlZnQgb2YgcmlnaHQgY2hpbGQuCiAgICBpZihpbmQhPS0xKXsKICAgICAgICBwb3N0b3JkZXIoaW5kLCByKTsKICAgICAgICBwb3N0b3JkZXIobCsxLCBpbmQtMSk7CiAgICB9CiAgICBlbHNlewogICAgICAgIHBvc3RvcmRlcihsKzEsIHIpOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkKewogICAgLy8gcmVzZXR0aW5nIGdsb2JhbCB2YXJpYWJsZXMKICAgIGFuc19ubz0wOwogICAgaz0wOwoKICAgIC8vIHNjYW5uaW5nIGlucHV0CiAgICBjaW4+Pm47CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjaW4+PmFycltpXTsKICAgIH0KCiAgICAvLyBjYWxsIHRvIHBvc3RvcmRlcgogICAgcG9zdG9yZGVyKDAsIG4tMSk7CgogICAgLy8gaWYgYW5zIGRvZXNuJ3QgZXhpc3QsIHByaW50IE5PLCBhbmQgcmV0dXJuCiAgICBpZihhbnNfbm8pewogICAgICAgIGNvdXQ8PCJOTyI8PGVuZGw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIHByaW50IGFucwogICAgZm9yKGludCBpPWstMTtpPj0wO2ktLSl7CiAgICAgICAgY291dDw8YW5zW2ldPDwiICI7CiAgICB9CgogICAgY291dDw8ZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwoKICAgIGludCB0PTE7IGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=