|
||||||||||
Play with ChainTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9546 Accepted Submission(s): 3649 Problem Description YaoYao is fond of playing his chains. He has a chain containing n diamonds on it. Diamonds are numbered from 1 to n. At first, the diamonds on the chain is a sequence: 1, 2, 3, ¡, n. He will perform two types of operations: CUT a b c: He will first cut down the chain from the ath diamond to the bth diamond. And then insert it after the cth diamond on the remaining chain. For example, if n=8, the chain is: 1 2 3 4 5 6 7 8; We perform ¡°CUT 3 5 4¡±, Then we first cut down 3 4 5, and the remaining chain would be: 1 2 6 7 8. Then we insert ¡°3 4 5¡± into the chain before 5th diamond, the chain turns out to be: 1 2 6 7 3 4 5 8. FLIP a b: We first cut down the chain from the ath diamond to the bth diamond. Then reverse the chain and put them back to the original position. For example, if we perform ¡°FLIP 2 6¡± on the chain: 1 2 6 7 3 4 5 8. The chain will turn out to be: 1 4 3 7 6 2 5 8 He wants to know what the chain looks like after perform m operations. Could you help him? Input There will be multiple test cases in a test data. For each test case, the first line contains two numbers: n and m (1¡Ün, m¡Ü3*100000), indicating the total number of diamonds on the chain and the number of operations respectively. Then m lines follow, each line contains one operation. The command is like this: CUT a b c // Means a CUT operation, 1 ¡Ü a ¡Ü b ¡Ü n, 0¡Ü c ¡Ü n-(b-a+1). FLIP a b // Means a FLIP operation, 1 ¡Ü a < b ¡Ü n. The input ends up with two negative numbers, which should not be processed as a case. Output For each test case, you should print a line with n numbers. The ith number is the number of the ith diamond on the chain. Sample Input
Sample Output
Source | ||||||||||
|