#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int e[N],ne[N],idx;
int head,head2;
void init()
{
head=-1;
head2=-1;
idx=0;
}
void add(int a,int b) //把b插入到a后面
{
e[idx]=b;
ne[idx]=ne[a];
ne[a]=idx;
idx++;
}
void add_head(int b) //把b插入到头结点后面
{
e[idx]=b;
ne[idx]=head;
head=idx++;
}
void add_head2(int b)
{
e[idx]=b;
ne[idx]=head2;
head2=idx++;
}
void remove(int k) //删除第k个插入的数后面的数
{
ne[k]=ne[ne[k]];
}
void remove_head() //删除头结点后面的数
{
head=ne[head];
}
int main()
{
int n,l,r;
cin>>n>>l>>r;
init();
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
if(i==0)
{
add_head(i);
}
else
{
add(i-1,i);
}
}
//下面进行头插法
int p=idx; //头插法由于是倒过来插的,所以idx是第一个插入的元素,也就是最后一个元素
//我们把l到r的这一段单独拿出来然后头插到 head2指引的链表中-----------
l--;
r--;
for(int i=l;i!=r+1&&i!=-1;i=ne[i])
{
int j=e[i];
add_head2(j);
}
//----------------------------------------------------------------------
if(l==0) //如果l是head指针指向的节点
{
head=head2;
ne[p]=ne[r];
}
else //如果l不是head指针指向的节点
{
ne[l-1]=head2;
ne[p]=ne[r];
}
for(int i=head;i!=-1;i=ne[i])
{
int j=e[i];
cout<<a[j]<<" ";
}
cout<<endl;
return 0;
}