#include<bits/stdc++.h>
using namespace std;
const int N=110;
int s[N];
int main(){
int a,b,n;
cin>>n;
for(int i=1;i<n;i++) {
cin>>s[i];
s[i]+=s[i-1];
}
cin>>a>>b;
printf("%d",s[b-1]-s[a-1]);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n;
struct Player{
int id,pr;
string name;
bool operator<(const Player &w)const {
if(pr==w.pr) return id<w.id;
return pr<w.pr;
}
}player[N];
int get_pr(string p){//由名字求优先级
if(p=="rat") return 1;
else if(p=="child"||p=="woman") return 2;
else if(p=="man") return 3;
return 4;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
string name,p;
cin>>name>>p;
player[i]={i,get_pr(p),name};
}
sort(player,player+n);
for(int i=0;i<n;i++){
cout<<player[i].name<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int p[N];//用于存父节点
void find(int x,int s ){
if(p[x]==x) return ;//最后跳出条件为a[0]=0 这里相当于多一个2的根节点0
find(p[x],x);
p[x]=s;//让原来自己的根节点指向自己 也就是两个根节点之间的方向取反
}
int main(){
int n,r1,r2;
cin>>n>>r1>>r2;
for(int i=1;i<=n;i++){
int x;
if(i!=r1){
cin>>x;//一定要先判断再输入
p[i]=x;
}
}
find(p[r2],r2);//先存根节点 再存自己
for(int i=1;i<=n;i++){
if(i!=r2){
cout<<p[i]<<' ';
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=50010,M=N*2;
int h[N],e[M],ne[M],idx;
int p[N];
int n,r1,r2;
void add(int a,int b){//存储无向边
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u,int fa){
p[u]=fa;
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(j==fa) continue;
dfs(j,u);
}
}
int main(){
cin>>n>>r1>>r2;
memset(h,-1,sizeof h);
for(int i=1;i<=n;i++){
int x;
if(i!=r1){
cin>>x;
add(i,x),add(x,i);
}
}
dfs(r2,-1);//让根节点指向-1
for(int i=1;i<=n;i++){
if(i!=r2){
cout<<p[i]<<' ';
}
}
return 0;
}