货车分拣
                                         
                                         
                            
                             
                                         
                                          Problem 
                         
                                 <分区>
需要确定是否可以使用堆栈对数字序列进行排序。
一列火车从轨道 1 到达死胡同(见图片)。允许一次从火车上解开一节或几节第一节车厢并将它们带到死胡同(如果您愿意,您甚至可以一次将整列火车带到死胡同)。之后,将部分车皮运到轨道2的一侧。然后你可以再将几节车皮运到死胡同,再次将部分车皮运到轨道2的一侧。以此类推,使得每节车皮仅从轨道 1 驶入死胡同一次,然后在轨道 2 离开死胡同一次。禁止从轨道 2 进入死胡同或离开轨道 1 的死胡同。如果不进入死胡同,就无法从路径 1 到达路径 2。
 
火车车厢最初的行驶顺序是已知的。要求按照指示操作,使火车车厢按顺序行驶(先是第一辆,然后是第二辆,以此类推,从火车头开始沿着轨道 2 远离死胡同计算)。写个程序看看能不能搞定。
 
输入
输入数字 N —火车中的车厢数量 (\(1<=N<=2000\))。接下来是车厢编号,从在轨道 1 上行驶的火车头到尽头。汽车用从 1 到 N 的自然数编号,每个自然数恰好出现一次。
 
输出
当火车从尽头走轨道 2 时,是否可以让车厢按顺序从 1 到 N,从火车头数起?如果可能,显示消息YES。 如果不可能,打印NO。
 
 
例子
<头>
<日>#日>
| 输入 | 
输出 | 
注意 | 
东西>
<正文>
| 1 | 
3 
3 2 1
 | 是 | 
我们需要把整列火车带到死胡同,然后把它完全带到2号轨道 | 
| 2 | 
 4 
4 1 3 2 
 | 
 是 
 | 
首先,您需要将两辆货车带到死胡同,其中一辆将留在死胡同,第二辆 —取出到2nd track,然后再带两辆车到死胡同,把站在死胡同的3辆车取出到2nd track | 
| 3 | 
3 
2 3 1
 | 没有 | 
  | 
表>