神奇的数据结构栈
题号:NC15409
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

大家刚刚接触数据结构,发现这是个非常神奇的东东。如果没接触也没有关系,给大家介绍一下。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。

1.进栈(PUSH)算法

①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);

②置TOP=TOP+1(栈指针加1,指向进栈地址);

③S(TOP)=X,结束(X为新进栈的元素);

2.出栈(POP)算法

①若TOP≤0,则给出下溢信息,作出错处理(出栈前先检查是否已为空栈, 空则下溢;不空则作②);

②X=S(TOP),(出栈后的元素赋给X):

③TOP=TOP-1,结束(栈指针减1,指向栈顶)。
比如现在有序列1,2,3入栈,那么可能出栈的序列有:1,2,3;1,3,2;3,2,1;2,1,3;2,3,1;共5种;
那么锐神提出一个问题就来了:如果有n个元素进栈,那么有多少种方式出栈呢?帮帮锐神吧,送你一个气球作为奖励。嘿嘿嘿。。。。

输入描述:

第一行一个数T,表示有T组数据。
对于每组数据,
每行一个整数N

输出描述:

每一组数据输出一行,满足条件的出栈序列数量。
示例1

输入

复制
3
1
2
3

输出

复制
1
2
5

备注: