import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
class Node {
private Node next;
private int value;
public Node(int value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public static Node createNodeList(Integer[] values) {
Node head = new Node((values[0]));
Node node = head;
for (int i = 1; i < values.length; i++) {
Node newNode = new Node(values[i]);
node.next = newNode;
node = newNode;
}
return head;
}
public static Node createNodeList(String[] values) {
Node head = new Node(Integer.parseInt(values[0]));
Node node = head;
for (int i = 1; i < values.length; i++) {
Node newNode = new Node(Integer.parseInt(values[i]));
node.next = newNode;
node = newNode;
}
return head;
}
}
class LinkReverse {
public static StringBuilder linkReverse(Node head, int len, int left,int right) {
StringBuilder sb = new StringBuilder();
if(left>right||left>len||right>len)return sb;
//找left节点和right节点
Node left_node=findNode(head,len+1-left);
Node right_node=findNode(head,len+1-right);
//left节点的前一个节点,若存在则给出,若不存在则为null(不存在说明left为头节点)
Node left_forward=null;
if(len+2-left<=len){
left_forward=findNode(head,len+2-left);
}
//开始反转
if (right - left > 0) {
Node n1 = left_node;
Node n2 = n1.getNext();
Node n3 = n2.getNext();
while (n1 != right_node) {
n2.setNext(n1);
n1 = n2;
n2 = n3;
if (n3 != null)n3 = n3.getNext();
}
left_node.setNext(n2);
if(left_forward!=null){
left_forward.setNext(n1);
}else{
head=n1;//若left节点为头结点,说明头结点被翻转了,head需指向翻转的尾部
}
}
//输出
Node n = head;
while (n != null) {
sb.append(n.getValue()).append(" ");
n = n.getNext();
}
return sb;
}
//找倒数第x个节点
public static Node findNode(Node head, int x) {
Node n_fast = head;//快指针
Node n_low = head;//慢指针
//快指针先走k步
for (int i = 0; i < x; i++) {
n_fast = n_fast.getNext();
}
//快慢指针一起走,到快指针走完为止,慢指针刚好指向目标位置
while (n_fast != null) {
n_fast = n_fast.getNext();
n_low = n_low.getNext();
}
return n_low;
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(input.readLine());
String[] strings1 = input.readLine().split(" ");
Node head = Node.createNodeList(strings1);
String[] strings2 = input.readLine().split(" ");
int l = Integer.parseInt(strings2[0]);
int r = Integer.parseInt(strings2[1]);
System.out.print(LinkReverse.linkReverse(head, n, l, r).toString());
}
}