import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
// 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어
// 알파벳으로만 이루어져 있다.
static Stack<Character> stack = new Stack<Character>();
static String resultValue = "";
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
System.out));
String tempCase = null;
int testCase = 0;
try {
tempCase = br.readLine();
testCase = Integer.parseInt(tempCase);
String tempSentense = "";
StringBuffer sf = new StringBuffer();
for (int t = 0; t < testCase; t++) {
stack.clear();
sf.setLength(0);
tempSentense = br.readLine();
for (int i = 0; i < tempSentense.length(); i++) {
//공백일 경우에 출력
if (tempSentense.charAt(i) == " ".charAt(0)) {
while (!stack.empty()) {
sf.append(stack.pop());
}
sf.append(" ");
}else{//공백이 아니면 push
stack.push(tempSentense.charAt(i) ) ;
}
}
//마지막 남은 문장 출력
while (!stack.empty()) {
sf.append(stack.pop());
}
bw.write(sf.toString()+ "\n");
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}