/*
思路: 利用一个容量为4的数组来模拟菜单。
*/
#include <array>
#include <deque>
#include <iostream>
using namespace std;
int main() {
int n;
string command;
cin >> n >> command;
int len = command.length();
int pos = 1;
array<int,4> dq{0};
if(n <= 4 ){
for(int i = 0 ; i < len; ++i){
if(command[i] == 'U'){
if(--pos == 0){
pos = n;
}
}else{
if(++pos == n+1){
pos = 1;
}
}
}
for(int i = 0 ; i < n; ++i){
cout << i+1 << " ";
}
cout << endl;
cout << pos << endl;
}
// 歌曲数量超过4首
else{
//采用滑动窗口
// 最开始的菜单界面 放的 1,2,3,4
for(int i = 0 ; i < 4; ++i){
dq[i] = i + 1;
}
// 遍历命令列表
for(int i = 0 ; i < len; ++i){
// 按下up键
if(command[i] == 'U'){
// 当光标在第一首歌曲上,用户按Up键后,屏幕要显示最后一页(即显示第7-10首歌)
if(--pos == 0){
pos = n;
//采用滑动窗口
for(int j = 0 ; j < 4; ++j){
dq[j] = n - 4 + j + 1;
}
}else{
// 一般翻页:屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,
// 用户按Up键后,屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。
if(pos == dq[0]-1){
for(int j = 0 ; j < 4; ++j){
dq[j] -= 1;
}
}
}
}else{// 用户按下 down 键的情况
// 屏幕显示最后一页时,光标在最后一首歌曲上,用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。
if(++pos == n+1){
pos = 1;
//采用滑动窗口
for(int j = 0 ; j < 4; ++j){
dq[j] = j + 1;;
}
}else{
// 光标当前屏幕的最后一首歌时的Down键处理
if(pos == dq[3]+1){
for(int j = 0 ; j < 4; ++j){
dq[j] += 1;;
}
}
}
}
}
for(auto p : dq){
cout << p << " ";
}
cout << endl;
cout << pos << endl;
}
}
// 64 位输出请用 printf("%lld")