
#include <string>
using namespace std;
int main(){
string str;
getline(cin,str);
string ans="";
int n=str.size();
int i=n-1,j=n-1;
while(j>=0){
if(str[j] != ' '){
for(i=j;i>=0;i--){
if(str[i] == ' ')
break;
}
ans+=str.substr(i+1,j-i);
ans+=" ";
j=i;
}
j--;
}
ans.erase(ans.end()-1);
cout<<ans<<endl;
return 0;
}

#include<iostream>
using namespace std;
//dp[i],i时候,最多点赞数。dpnum[i],i时候,篇数。
int main() {
int n;
cin >> n;
vector<int> v;
for (int i = 0; i < n; i++) {
int tp;
cin >> tp;
v.push_back(tp);
}
vector<int> dp(n), dpnum(n);
dp[0] = v[0];
dp[1] = (v[0] > v[1]) ? v[0] : v[1];
dpnum[0] = 1;
dpnum[1] = 1;
for (int i = 2; i < n; i++) {
//选用了v[i],所以篇数+1
if ((v[i] + dp[i - 2]) > dp[i - 1]) {
dp[i] = v[i] + dp[i - 2];
dpnum[i] = 1+ dpnum[i - 2];
}
//没有选用,所以篇数为前一个,即dpnum[i - 1]
else
{
dp[i] = dp[i - 1];
dpnum[i] = dpnum[i - 1];
}
}
cout << dp[n-1]<<' '<< dpnum[n - 1];
}

#include<string>
using namespace std;
int main() {
string str;
getline(cin, str);
string res;
for (int i = 0; i < str.size(); i++) {
if (str[i] == '(')
{
i++;
int n = 1;
while (i < str.size() && n != 0)
{
if (str[i] == '(')
n++;
if (str[i] == ')')
n--;
if (n == 0)
break;
i++;
}
}
else if (str[i] == '<')
{
if (!res.empty())
res.pop_back();
}
else {
res.push_back(str[i]);
}
}
cout << res << endl;
return 0;
}

using namespace std;
typedef pair<int,int> PII;
#define x first
#define y second
int main()
{
int N;
while(cin>>N)
{
vector<string> g(N);
string line;
PII st,end;
for(int i=0;i<N;i++)
{
cin>>line;
for(int j=0;j<N;j++)
{
if(line[j]=='S') st={i,j};
if(line[j]=='E') end={i,j};
}
g[i]=line;
}
//cout<<st.x<<" "<<st.y<<endl;
queue<PII> q;
q.push(st);
int cnt=0;
bool vis[N][N];
memset(vis,0,sizeof vis);
int dirs[5]={1,0,-1,0,1};
vis[st.x][st.y]=true;
bool flag=false;
while(!q.empty())
{
int size=q.size();
for(int i=0;i<size;i++)
{
auto cur=q.front(); q.pop();
if(cur.x==end.x && cur.y==end.y)
{
cout<<cnt<<endl;
flag=true;
break;
}
for(int k=0;k<4;k++)
{
int ni=cur.x+dirs[k],nj=cur.y+dirs[k+1];
if(ni==-1) ni=N-1;
else if(ni==N) ni=0;
if(nj==-1) nj=N-1;
else if(nj==N) nj=0;
if(vis[ni][nj] || g[ni][nj]=='#') continue;
q.push({ni,nj});
vis[ni][nj]=true;
}
}
cnt++;
}
if(!flag)
cout<<-1<<endl;
}
return 0;
}