#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
vector< string> Explode_L( const string & str, const string & d) {
int s = 0 ;
int i = 0 ;
int j;
vector< string> res;
while ( i + d.size ( ) - 1 < str.size ( ) ) {
for ( j= ( 0 ) ; j< ( d.size ( ) ) ; j++ ) {
if ( str[ i+ j] ! = d[ j] ) {
break ;
}
}
if ( j ! = d.size ( ) ) {
i++ ;
continue ;
}
res.push_back ( str.substr ( s, i- s) ) ;
s = ( i + = d.size ( ) ) ;
}
res.push_back ( str.substr ( s) ) ;
return res;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
vector< string> printVertically( string s) {
int Q5VJL1cS, RZTsC2BF, i;
int x;
int y;
string tmp;
vector< string> res;
vector< string> in;
in = Explode_L( s, " " ) ;
x = in.size ( ) ;
y = 0 ;
for ( i= ( 0 ) ; i< ( x) ; i++ ) {
chmax( y, in[ i] .size ( ) ) ;
}
for ( Q5VJL1cS= ( 0 ) ; Q5VJL1cS< ( x) ; Q5VJL1cS++ ) {
tmp + = " " ;
}
for ( RZTsC2BF= ( 0 ) ; RZTsC2BF< ( y) ; RZTsC2BF++ ) {
res.push_back ( tmp) ;
}
for ( i= ( 0 ) ; i< ( x) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( in[ i] .size ( ) ) ; j++ ) {
res[ j] [ i] = in[ i] [ j] ;
}
}
for ( i= ( 0 ) ; i< ( y) ; i++ ) {
while ( res[ i] [ res[ i] .size ( ) - 1 ] == ' ' ) {
res[ i] = res[ i] .substr ( 0 , res[ i] .size ( ) - 1 ) ;
}
}
return res;
}
}
;
// cLay varsion 20200119-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// vector<string> printVertically(string s) {
// int x, y;
// string tmp;
// vector<string> res, in;
// in = Explode(s, " ");
// x = in.size();
// y = 0;
// rep(i,x) y >?= in[i].size();
//
// rep(x) tmp += " ";
// rep(y) res.push_back(tmp);
//
// rep(i,x) rep(j,in[i].size()) res[j][i] = in[i][j];
// rep(i,y) while(res[i][res[i].size()-1]==' ') res[i] = res[i].substr(0, res[i].size() - 1);
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWF4KFMgJmEsIFQgYil7CiAgaWYoYTxiKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KdmVjdG9yPHN0cmluZz4gRXhwbG9kZV9MKGNvbnN0IHN0cmluZyAmc3RyLCBjb25zdCBzdHJpbmcgJmQpewogIGludCBzID0gMDsKICBpbnQgaSA9IDA7CiAgaW50IGo7CiAgdmVjdG9yPHN0cmluZz4gcmVzOwogIHdoaWxlKGkgKyBkLnNpemUoKSAtIDEgPCBzdHIuc2l6ZSgpKXsKICAgIGZvcihqPSgwKTtqPChkLnNpemUoKSk7aisrKXsKICAgICAgaWYoc3RyW2kral0gIT0gZFtqXSl7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGlmKGogIT0gZC5zaXplKCkpewogICAgICBpKys7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgcmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHMsIGktcykpOwogICAgcyA9IChpICs9IGQuc2l6ZSgpKTsKICB9CiAgcmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHMpKTsKICByZXR1cm4gcmVzOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIHZlY3RvcjxzdHJpbmc+IHByaW50VmVydGljYWxseShzdHJpbmcgcyl7CiAgICBpbnQgUTVWSkwxY1MsIFJaVHNDMkJGLCBpOwogICAgaW50IHg7CiAgICBpbnQgeTsKICAgIHN0cmluZyB0bXA7CiAgICB2ZWN0b3I8c3RyaW5nPiByZXM7CiAgICB2ZWN0b3I8c3RyaW5nPiBpbjsKICAgIGluID1FeHBsb2RlX0wocywgIiAiKTsKICAgIHggPSBpbi5zaXplKCk7CiAgICB5ID0gMDsKICAgIGZvcihpPSgwKTtpPCh4KTtpKyspewogICAgICBjaG1heCh5LCBpbltpXS5zaXplKCkpOwogICAgfQogICAgZm9yKFE1VkpMMWNTPSgwKTtRNVZKTDFjUzwoeCk7UTVWSkwxY1MrKyl7CiAgICAgIHRtcCArPSAiICI7CiAgICB9CiAgICBmb3IoUlpUc0MyQkY9KDApO1JaVHNDMkJGPCh5KTtSWlRzQzJCRisrKXsKICAgICAgcmVzLnB1c2hfYmFjayh0bXApOwogICAgfQogICAgZm9yKGk9KDApO2k8KHgpO2krKyl7CiAgICAgIGludCBqOwogICAgICBmb3Ioaj0oMCk7ajwoaW5baV0uc2l6ZSgpKTtqKyspewogICAgICAgIHJlc1tqXVtpXSA9IGluW2ldW2pdOwogICAgICB9CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoeSk7aSsrKXsKICAgICAgd2hpbGUocmVzW2ldW3Jlc1tpXS5zaXplKCktMV09PScgJyl7CiAgICAgICAgcmVzW2ldID0gcmVzW2ldLnN1YnN0cigwLCByZXNbaV0uc2l6ZSgpIC0gMSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMjAwMTE5LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgdmVjdG9yPHN0cmluZz4gcHJpbnRWZXJ0aWNhbGx5KHN0cmluZyBzKSB7Ci8vICAgICBpbnQgeCwgeTsKLy8gICAgIHN0cmluZyB0bXA7Ci8vICAgICB2ZWN0b3I8c3RyaW5nPiByZXMsIGluOwovLyAgICAgaW4gPSBFeHBsb2RlKHMsICIgIik7Ci8vICAgICB4ID0gaW4uc2l6ZSgpOwovLyAgICAgeSA9IDA7Ci8vICAgICByZXAoaSx4KSB5ID4/PSBpbltpXS5zaXplKCk7Ci8vIAovLyAgICAgcmVwKHgpIHRtcCArPSAiICI7Ci8vICAgICByZXAoeSkgcmVzLnB1c2hfYmFjayh0bXApOwovLyAKLy8gICAgIHJlcChpLHgpIHJlcChqLGluW2ldLnNpemUoKSkgcmVzW2pdW2ldID0gaW5baV1bal07Ci8vICAgICByZXAoaSx5KSB3aGlsZShyZXNbaV1bcmVzW2ldLnNpemUoKS0xXT09JyAnKSByZXNbaV0gPSByZXNbaV0uc3Vic3RyKDAsIHJlc1tpXS5zaXplKCkgLSAxKTsKLy8gCi8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK