Polycarp loves ciphers. He has invented his own cipher called Right-Left.Right-Left cipher is used for strings. To encrypt the string $$$s=s_{1}s_{2} \dots s_{n}$$$ Polycarp uses the following algorithm:  he writes down $$$s_1$$$,  he appends the current word with $$$s_2$$$ (i.e. writes down $$$s_2$$$ to the right of the current result),  he prepends the current word with $$$s_3$$$ (i.e. writes down $$$s_3$$$ to the left of the current result),  he appends the current word with $$$s_4$$$ (i.e. writes down $$$s_4$$$ to the right of the current result),  he prepends the current word with $$$s_5$$$ (i.e. writes down $$$s_5$$$ to the left of the current result),  and so on for each position until the end of $$$s$$$. For example, if $$$s$$$="techno" the process is: "t" $$$\to$$$ "te" $$$\to$$$ "cte" $$$\to$$$ "cteh" $$$\to$$$ "ncteh" $$$\to$$$ "ncteho". So the encrypted $$$s$$$="techno" is "ncteho".Given string $$$t$$$ — the result of encryption of some string $$$s$$$. Your task is to decrypt it, i.e. find the string $$$s$$$.

The only line of the input contains $$$t$$$ — the result of encryption of some string $$$s$$$. It contains only lowercase Latin letters. The length of $$$t$$$ is between $$$1$$$ and $$$50$$$, inclusive.

Print such string $$$s$$$ that after encryption it equals $$$t$$$.

var s, n, c: string;
begin
  read(s);
  if length(s) mod 2 = 0 then
  begin
    while length(s)<> 0 do
    begin
      c:=copy(s,length(s),1);
      delete(s,length(s),1);
      n:=n+c;
      if length(s)<>0 then
      begin
        c:=copy(s,1,1);
        delete(s,1,1);
        n:=n+c;
      end;
    end;
  end
  else
  begin
    while length(s)<> 0 do
    begin
      c:=copy(s,1,1);
      delete(s,1,1);
      n:=n+c;
      if length(s)<>0 then
      begin
        c:=copy(s,length(s),1);
        delete(s,length(s),1);
        n:=n+c;
      end;
    end;
  end;
  while length(n) <> 0 do
  begin
    c:=copy(n,length(n),1);
    delete(n,length(n),1);
    s:=s+c;
  end;
  write(s);
end.

var  i,k: integer;
     s: string;
     f: string;
 begin
   read(s);
     if length(s) mod 2 = 1 then i:=1
     else i:=length(s);
   f:=s;
   while s <> '' do
   begin
     f[length(s)]:=s[i];
     delete(s,i,1);
     if i = 1 then i:=length(s)
       else i:=1;
   end;

   writeln(f);
 end.

var a,b,c,d,cop1,cop2,cop3:string;
z,x,y,q,w,u,k:int64;
begin
k:=1;
read (a);
z:=length(a);
w:=z mod 2;
if w<>0 then x:=(z div 2)+1 else x:=(z div 2);
cop1:=copy(a,x,1);
b:=concat(b+cop1);
while y<x do begin
y:=y+1;
q:=y mod 2;
cop2:=copy(a,x+y,1);
cop3:=copy(a,x-y,1);
b:=concat(b,cop2); k:=k+1;
if k<z then b:=concat(b,cop3);
k:=k+1;
end;
writeln(b);
end.

var s,st:string;d,i:longint;
begin
 read(st);
 d:=length(st);if d<3 then write(st) else
 if  odd(d) then begin
  s:=st[d div 2+1];
  for i:=1 to d div 2 do
  begin
   s:=s+st[d div 2+1+i];
   s:=S+st[d div 2+1-i];
  end;

 end else begin
  s:='';
 for i:=1 to d div 2 do
  begin

   s:=s+st[d div 2+1-i]; s:=s+st[d div 2+i];
  end;

 end;write(s);
end.

                          const eps=0.0000000001;  besk1=200000008;  nnn=4600000;
              modul=1000000007{998244353} ;
   besk=4000000000000000000;
   label 22,1,2,3,4,33;
    type    real=extended;   double=extended;
    mas=array [-300000..nnn] of int64;   point=record x,y,z:real;end;
    zap=record p1,p2,p3,p4 :int64;end; zap1=^zap;
    mass=array[-10000..nnn] of longint;mass1=^mass;
    var rr,tmin,aaa,bbb,ccc,kolst,kollek,aa,bb,t1,t2,kolx,koly,ans,ans1,ans2,dl,posleft,posright,n,xxx,yyy,dx,dy,m,w,h,jjj,l,r,cc,sum,mnog,nn,t3,t4,t5,t6,posmax,tmax,kold,kk,j2,ttt,ppp,kol,sq,pmin,pmax,limit,posi,posj,diam,oldt,ot1,time,pos,ll,posx,posy,gr,dloch,newdl,oldn,oldm,ost,ot,p1,p2,p3,p4,znamzz,kolperiod,znam,tperiod,start,finish,kol1,kol2,lavel,p0,jj,ii,ogr,q,p,pp,tt,oldtt,qq,qq1,qq2,q1,q2,imax,t,nm,smin,cen:int64;
   k,i2,i3,step2,k1,k2,pp0,mask,i1,j1,step1, step, i,j:longint;
   zz,numx,numy,xold,yold,x1,x0,d,xx,yy,b,a,zsum,y,x,z:array[-200000..535002] of extended;
    prob1,prob2,prob3,pr1new,pr2new,pr3new,pr1,pr2,pr3:zap;
    iii,oldpos,finot,vv,znak:int64;
    aold:mas;  anss:zap;
    ss1,ss2:string;
    newstr,str,sss:array[-1000..20000] of string;
    lll,rrr,v,dist,alpha,phi:extended;
    zzz,ddnew,koef,polex,ddsum,dd:array[-1..4400,-1..4200] of int64;
    ppos,mma,ma:array[-1000..2000005,-1..15] of int64;
    xleft,xright,xplus,xminus,px,py,xc,yc,xxc,yyc:extended;
    del:array[-1..100001,-1..20] of longint;
    z0,num,y1,z1,z2,kolnul,fact,next,prev,s,name,dnew, voltay,c,day:mas;
    zzzz:array[0..125000000] of byte;
    aaaa,bbbb,x2:extended;
    delit:array[0..100000,0..20] of longint;
    pole:array[-10..2002,-10..2005] of char;
    ddd,ppole,ddl,ddr,dd3,dd4:array[-10..200,-10..220] of int64;
    ddnnew:array[-1..12,-1..12,0..200,0..3] of int64;
   newzan,marked,zanx,zany:array[-1000000..2000000] of boolean;
    ssold,sss1,sss2:string;
    def,stepen,koled,och,newoch,place,newnabor,stoim,nabor:array[-10..200005] of int64;
     zanleft,zanright,zan,fl:array[-100000..10000000] of boolean;
     dost:array[-1..210,-1..210,0..3,0..3] of int64;
    ss:string;ch,ch1,ch2:char;
    pr,hesh,numright,dr: array [-10..206000,-1..16] of int64;
    s3,s2,s1:array[-100..500000] of string;

    grr :array [-10..2010,-10..2010] of extended;
    maxpr:array[0..nnn] of string;
     tx,ty,vel,ott,v0,v1,s0,t0:int64;
     zv:point;
     left,right,ugol,rot,temp,sumtemp,vol,newx,newy:array[-1000..400000] of int64;
     beta,mash,sqx,sqy,ottt:extended;
     xxxx,yyyy,yot:double;
       flag2,flag,flag1:boolean;

  function max(a,b:int64):int64;
begin max:=a; if b>a then max:=b;   end;

  function min(a,b:int64):int64;
begin min:=a; if b<a then min:=b;   end;

procedure udal(p:longint);
begin  next[prev[p]]:=next[p]; prev[next[p]]:=prev[p]; end;

      function nod(x,y:int64):int64; var z:int64;
begin   repeat  z:=x mod y;x:=y;y:=z;   until  z=0 ;  nod:=x;end;

     function summ(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p2+xx.p2*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=t1 div tt mod modul;
    t2:=t2 div tt mod modul;
    ott.p1:=t1; ott.p2:=t2;

   summ:=@ott;
 end;

     function prod(xx,yy:zap):zap1;
var t1,t2,tt:int64; ott:zap;
 begin
    t1:=(xx.p1*yy.p1) mod modul;
    t2:=(xx.p2*yy.p2) mod modul;
    tt:=nod(t1,t2);
    t1:=(t1 div tt) mod modul;
    t2:=(t2 div tt) mod modul;
    ott.p1:=t1; ott.p2:=t2;

   prod:=@ott;
 end;

    function al(x,y:real):real; var t0,t1,p,s0,s1:real;
 begin
     if (x>0)and(y>=0) then p:=arctan(y/x);
     if x<0 then p:=pi+arctan(y/x);
     if(x>0)and(y<0) then p:=2*pi+arctan(y/x);
     if x=0 then if (y>=0) then p:=pi/2 else p:=3*pi/2;
     al:=p{/pi*180};
 end;

function degg(a,k:int64):int64; var p:int64;
begin
 if k<=0 then degg:=1 else if odd(k) then degg:=degg(a,k-1)*a mod modul else
   begin  p:=degg(a,k shr 1); degg:=p*p mod modul;   end;

end;

function prost(tt:int64):boolean;
var aa:extended; i,p,t:longint;  fl:boolean;
 begin
   fl:=true;
   aa:=tt;
   aa:=sqrt(aa);
   t:=round(aa);
   for i:=2 to t do if tt mod i=0 then fl:=false;

   prost:=fl;
 end;

function arcsin(pp:extended):extended;
var tt:extended;
begin
   if (abs(pp)<=1+eps)and (abs(pp)>=1-eps)
   then if pp>0 then arcsin:=pi/2 else arcsin:=-pi/2;
   tt:=1-pp*pp;
   if abs(tt)>=0 then
     begin
        arcsin:=arctan(pp/sqrt(tt));

     end;

end;

function gl(ch:char):boolean;
begin
 if (ch='o')or (ch='a')or(ch='e')or(ch='u')or(ch='i') then gl:=true else gl:=false;

end;

{function zaprmax(left,right:longint):int64;
begin
   if left>=right then zaprmax:=y[left] else
     begin
        if not odd(left) and odd(right) then zaprmax:=zaprmax(left shr 1,right shr 1) else
         begin
          if odd(left) then zaprmax:=max(zaprmax(left+1,right),y[left]);
          if not odd(right) then zaprmax:=max(zaprmax(left,right-1),y[right]);

         end;

     end;

end;
}

 function ff(gr:int64):boolean;

var ot,aa,bb,cc:int64; fl:boolean;
begin
  aa:=1; bb:=m;  cc:=aa; fl:=false;
  while abs(aa-bb)>1 do
    begin
       cc:=(aa+bb) shr 1;
       if y[cc]<gr then aa:=cc else bb:=cc;

    end;
   writeln(' cc= ',cc);
   cc:=min(cc+3,m+1);
   repeat dec(cc) until y[cc]<=gr;
   if y[cc]=gr then fl:=true else fl:=false;
  ff:=fl;
end;

function uspel(kolst,koldn,vm1,vm2,kollek:int64):boolean;
var fl:boolean; p1,p2,t1,t2,p,ot,pp:int64;
 begin
    t1:=min(kolst,vm1);
    t2:=min(kolst,vm2);
    p2:=koldn div 2;
    p1:=koldn-p2;
    ot:=p1*t1+p2*t2;
    fl:=ot>=kollek*kolst;
   { writeln()
    }
   uspel:=fl;
 end;

begin
  { assign (input,'D:\Projects\input.txt');reset(input);
      assign (output,'D:\Projects\output.txt'); rewrite(output);
   }
     readln(ss);
    n:=length(ss);
    pos:=(n+1) div 2;
  if not odd(n) then
begin
    for i:=1 to n do
      begin
         sss1:=sss1+ss[pos];
         if not odd(i) then pos:=n-pos else pos:=n-pos+1;

      end;
      writeln(sss1);
end else
    begin
    for i:=1 to n do
      begin
         sss1:=sss1+ss[pos];
         if  not odd(i) then pos:=n-pos+1 else pos:=n-pos+2;

      end;
      writeln(sss1);
end;

1:             close(output);
end.

label metka,kk;
var a,k:string;
b,c,i,t,p:longint;
begin
read(a);
k:=a;
b:=length(a);

if b mod 2=0 then begin
p:=b div 2;
goto kk;
end;

if b mod 2=1 then begin
p:=(b div 2)+1;
end;
kk:

if p=0 then begin
goto metka;
end;

for i:=1 to b do begin

if i mod 2=0 then begin
p:=p +(i-1);
k[i]:=a[p];
end;
if i mod 2=1 then begin
p:=p -(i-1);
k[i]:=a[p];
end;

end;
metka:
println(k);

end.

program A1085;
var t, s: string;
i,c,n:integer;
begin
readln(t);
s:=t;
c:=2;
n:=3;

if length(t) mod 2 = 0 then begin
  s[1]:=t[length(t) div 2];
  for i:=length(t) div 2 -1 downto 1 do begin
    s[n]:=t[i];
    n:=n+2;
    end;
  for i:= length(t) div 2 +1 to length(t) do begin
    s[c]:=t[i];
    c:=c+2;
    end;
  end

else begin
  s[1]:=t[length(t) div 2 +1];
  for i:=length(t) div 2 downto 1 do begin
    s[n]:=t[i];
    n:=n+2;
    end;
  for i:= length(t) div 2 +2 to length(t) do begin
    s[c]:=t[i];
    c:=c+2;
    end;
  end;
writeln(s);
end.

Program ABC;
var
a,x:integer;
s,uncoded:string[51];
begin
read(s);
a:=length(s);
if a mod 2 = 0 then begin
uncoded:=copy(s,(a div 2),1);
for x:=1 to ((a div 2)-1) do begin
uncoded:=uncoded+copy(s,((a div 2)+x),1);
uncoded:=uncoded+copy(s,((a div 2)-x),1);
end;
uncoded:=uncoded+copy(s,a,1);
end
else begin
uncoded:=copy(s,((a div 2)+1),1);
for x:=1 to (a div 2) do begin
uncoded:=uncoded+copy(s,(((a div 2)+1)+x),1);
uncoded:=uncoded+copy(s,(((a div 2)+1)-x),1);
end;
end;
write(uncoded);
end.

program a;

var
  t, t1, o: string;
  o2, i, k, ch: integer;

begin// techno - ncteho
  read(t);
  k := 1;
  ch := Length(t);
  if Length(t) = 1 then writeln(t) else begin
    if Length(t) mod 2 <> 0 then repeat o2 := Length(t);o := copy(t, o2, 1) + copy(t, 1, 1);delete(t, o2, 1);delete(t, 1, 1);t1 := o + t1; until Length(t) = 1 else
      repeat
        o2 := Length(t);o := copy(t, 1, 1) + copy(t, o2, 1);delete(t, o2, 1);delete(t, 1, 1);t1 := o + t1;
      until Length(t) < 1;
    if ch mod 2 =0 then write(t1) else write(t+t1);
  end;
end.

var s,t:string;
i,j:longint;
begin
readln(t);
if length(t) mod 2=1 then j:=(length(t) div 2)+1
else j:=length(t) div 2;
s:=s+t[j];
i:=j;
j:=j-1; i:=i+1;
while (j>0) do
begin
s:=s+t[i]+t[j]; i:=i+1; j:=j-1;
end;
if length(t) mod 2=0 then s:=s+t[length(t)];
write(s);
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
s1, s2: string;
i, x: integer;
begin
readln(s1);
s2:=s1;
x:=ceil(length(s1)/2);
s2[1]:=s1[x];
for i:=1 to length(s1) do
begin
s2[i+i]:=s1[x+i];
s2[i+i+1]:=s1[x-i];
end;
if length(s1)=1 then s2:=s1;
writeln(s2);
//readln;
end.

var n,x,i,j,k:integer;
s,s1:string;
begin
read(s);
if length(s) mod 2 = 0 then
begin
 while length(s) <> 0 do
  begin
   s1:=s[length(s)]+s1;
   s1:=s[1] + s1;
   s:=copy(s,2,length(s)-2);
  end;
 writeln(s1);
end else
 begin
 s1:=s[1]+s1;
 s:=copy(s,2,length(s)-1);
 while length(s) <> 0 do
  begin
   s1:=s[length(s)] + s1;
   s1:=s[1] + s1;
   s:=copy(s,2,length(s)-2);
  end;
  writeln(s1);
end;
end.

var
s,ss:ansistring;
i:longint;
a,b,l:int64;
begin
readln(s);

 l:=length(s);

 if l = 1          then begin write(s);halt;end;

 //s[0]:=s[1];

 if l mod 2 = 0 then a:=l div 2 else a:=l div 2 + 1;

 ss:=s[a];

// if l mod 2 = 0 then b:=l

 for i:=1 to a do
 begin
  if a+i<=l then ss:=ss+s[a+i];
  if a-i>0 then ss:=ss+s[a-i];

 end;

 write(ss);

                     {
for i:=1 to length(s) do
if i mod 2 = 0 then ss:=ss+s[i] else ss:=s[i]+ss;

write(ss);
                    }

end.

var s,s1 :string;
    c : array [1..100] of char;
    p,i,p1 : longint;
begin
   readln(s);
   if frac(length(s)/2)=0.5 then p:=trunc(length(s)/2)+1
                            else p:=round(length(s)/2);
   c[1]:=s[p];
   p1:=p-1;
   p:=p+1;
   for i:=2 to length(s) do begin
      if i mod 2=0 then begin
                        c[i]:=s[p];
                        p:=p+1;
                        end;
                            end;
   for i:=3 to length(s) do begin
      if i mod 2=1 then begin
                        c[i]:=s[p1];
                        p1:=p1-1;
                        end;
                            end;
   for i:=1 to length(s) do
      s1:=s1+c[i];
   writeln(s1);
end.

var
  s1, s2: STRING;
  i, n: integer;

begin
  readln(s1);
  s2:=s1;
  i := 1;
  n:=length(s1) div 2 + length(s1) mod 2;
  s2[1]:=s1[n];
    while abs(i) <n do
    begin
    try
      s2[i*2] := s1[n + i];
      s2[i*2+1] := s1[n - i];
      i:=i+1;
      except;
      end;
      end;
  write(s2);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        if length(s) mod 2=0 then i:=length(S) div 2
        else i:=length(s) div 2 +1;
        if length(s)>1 then write(s[i]);
        u:=1;
        while u<=i-1 do
        begin
                write(s[i+u]);
                write(s[i-u]);
                inc(u);
        end;
        if (length(s) mod 2 = 0) or (length(s)=1) then write(s[length(S)]);
end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
if length(a)mod 2 = 0 then s:=s+a[length(a)div 2+i];//+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2+i+1];

if length(a)mod 2 = 0 then s:=s+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2-i+1];
//writeln(i);                                           7
end;
if length(a)mod 2=0 then write(a[length(a) div 2]);
if length(a)mod 2=1 then write(a[length(a) div 2+1]);
//write(s[1])

if length(a)mod 2 = 0 then begin
for i:=1 to length(s)-1 do
write(s[i]);
halt;
end;
//for i:=1 to length(s) do
write(s);
end.

program primer;
var t:string;
s:array[1..60]of char;
nach,len,i:longint;

BEGIN
read(t);
len:=length(t);
nach:=1;
if length(t)mod 2=0 then
   begin
   for i:=length(t)downto 1 do
     if i mod 2=0 then
        begin
        s[i]:=t[len];
        len:=len-1;
        end
        else
          begin
          s[i]:=t[nach];
          nach:=nach+1;
          end;
   end;
if length(t)mod 2=1 then
   begin
   for i:=length(t)downto 1 do
     if i mod 2=0 then
        begin
        s[i]:=t[len];
        len:=len-1;
        end
        else
          begin
          s[i]:=t[nach];
          nach:=nach+1;
          end;
   end;
//while i<=length(t)do

for i:=1 to length(t) do write (s[i]);
END.

begin
  var s: string;
  Read(s);
  var s1: string;
  SetLength(s1, s.Length);
  s1[1] := s[(s.Length - 1) div 2 + 1];
  var c := 1;
  for var i := 1 to s.Length - ((s.Length - 1) div 2 + 1) do
  begin
    s1[1 + c] := s[((s.Length - 1) div 2 + 1) + i];
    c += 2;
    if c + 1 > s.Length then
      break;
  end;
  c := 3;
  for var i := 0 to (s.Length - 1) div 2   do
  begin
    if c > s.Length then
      break;
    s1[c] := s[((s.Length - 1) div 2) - i];
    c += 2;
    if c > s.Length then
      break;
  end;
  writeln(s1);
end.

LABEL f;
var str, ans:string;
    l, i, g, q:integer;
    ch:array[1..52] of char;
begin
readln(str);
l:=length(str);
g:=l;
i:=1;
if l>3 then begin
  if l mod 2 = 0 then begin
  while g>i do begin
    ch[l]:=str[g];
    ch[l-1]:=str[i];
    l:=l-2;
    i:=i+1;
    g:=g-1;
  end;
  end
  else begin
  g:=l div 2 + 1;
  i:=1;
  q:=2;
  ch[1]:=str[g];
  while i<=(l div 2) do begin
  ch[q]:=str[g+i];
  ch[q+1]:=str[g-i];
  q:=q+2;
  i:=i+1;
  end;
  end;
end
else if l=3 then  begin
  ch[1]:=str[2];
  ch[2]:=str[3];
  ch[3]:=str[1];
  end
  else begin
    ans:=str;
    goto f;
  end;
i:=1;
while i<=length(str) do begin
ans:=concat(ans, ch[i]);
i:=i+1;
end;
f:
writeln(ans);
end.

program z_a_del;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
    s, s1: string;
    i: integer;

begin
    readln(s);
    i := 1;
    while(i <= length(s) div 2 + length(s) mod 2) do begin
        if(odd(length(s))) then begin
            s1 := s[i] + s1;
            if(length(s1) < length(s)) then
                s1 := s[length(s) - i + 1] + s1;
        end
        else begin
            s1 := s[length(s) - i + 1] + s1;
            if(length(s1) < length(s)) then
                s1 := s[i] + s1;
        end;
        inc(i);
    end;
    writeln(s1);
    readln;
    readln;
end.

var s:string;i,i0:integer;
begin
readln(s);
i0:=length(s) mod 2+length(s) div 2;
for i:=0 to i0 do begin
if (i<>0) and (i+i0<=length(s)) then write(s[i0+i]);
if i0-i>=1 then write(s[i0-i]);
end
end.

var
  str: string;
  i, k, n, kol, per: longint;
  str1: array[1..99999] of char;

begin
  readln(str);
  k := length(str);
  kol := k;
  n := 1;
  i := 1;
  if length(str) mod 2 = 0 then
    while i <= length(str) do
    begin
      if i mod 2 = 1 then
      begin
        str1[i] := str[k];
        k := k - 1;
      end
      else
      begin
        str1[i] := str[n];
        n := n + 1;
      end;
      i := i + 1;
    end
    else
    while i <= length(str) do
    begin
      if i mod 2 = 0 then
      begin
        str1[i] := str[k];
        k := k - 1;
      end
      else
      begin
        str1[i] := str[n];
        n := n + 1;
      end;
      i := i + 1;
    end;
  for i := kol downto 1 do
                          write(str1[i]);
end.

program vvv;
var s,s2:string; b,i:integer;
begin
readln(s);
if length(s) mod 2 = 0 then b:=1;
for i:=1 to length(s) do begin
   if b mod 2 <> 0 then begin
   s2:=s2+copy(s, length(s), 1); delete(s, length(s), 1); end
else begin
s2:=s2+copy(s, 1, 1); delete(s, 1, 1); end;
inc(b);
end;

for i:=length(s2) downto 1 do
s:=s+s2[i];
writeln(s);
end.

Var s0,S:String;
    len,c,i:LongInt;

Begin
 Read(s0);
 len:=Length(s0);
 SetLength(S,len);
 c:=(len + 1) div 2;

 S[1]:=s0[c];
 For i:=1 to ((len-1) div 2) do begin
  S[i*2]:=s0[c+i];
  S[i*2+1]:=s0[c-i];
 end;
 If (len mod 2 = 0) then S[len]:=s0[len];

 writeLn(S);
End.

var
s,s1:string;
k,n,q,m,a,d:integer;
begin
readln(s);
if length(s)<3 then writeln(s)
else
begin
if length(s) mod 2 =1 then
   begin
   s1:=s[1];
   delete(s,1,1);
   end;
while s<>'' do
      begin
      s1:=s[1]+s[length(s)]+s1;
      delete(s,length(s),1);
      delete(s,1,1);
      end;
writeln(s1);
end;

end.

var
  s,s1: ansistring;
  i,j,n,m,k : longint;
begin
  readln(s);
  n := length(s);
  k := (n div 2)+(n mod 2);
  if (n mod 2 = 0) then
  begin
    for i := 1 to n div 2 do
    begin
      s1 := s1+s[k-i+1];
      s1 := s1+s[n-k+i];
    end;
  end
  else
  begin
   s1 := s1+s[k];
   for i := 1 to n div 2 do
   begin
     s1 := s1+s[n-k+i+1];
     s1 := s1+s[k-i];
   end;
  end;
  writeln(s1);
end.

var s,t:string;
i,j:longint;
begin
readln(t);
if length(t) mod 2=1 then j:=(length(t) div 2)+1
else j:=length(t) div 2;
s:=s+t[j];
i:=j;
j:=j-1; i:=i+1;
while (j>0) do
begin
s:=s+t[i]+t[j]; i:=i+1; j:=j-1;
end;
if length(t) mod 2=0 then s:=s+t[length(t)];
write(s);
end.

var i,t:1..50;s,h:string;
begin
read(s);t:=length(s);
for i:=1 to t div 2 do
if t mod 2=0 then begin h:=s[t-i+1]+h;h:=s[i]+h;end else begin h:=s[i]+h;h:=s[t-i+1]+h;end;
if t mod 2=1 then h:=s[t div 2+1]+h;
print(h);
end.

var
  S, S1: string;
  i, d, p, l: integer;
  d1: integer;

begin
  read(s);
  L := 1;
  p := 1;
  d := length(S);
  {for i := 1 to d do mas[i] := S[i];
  S := S + mas[i];}
  if (d mod 2) = 0 then d1 := Trunc(d / 2)
  else d1 := Trunc(d / 2) + 1;
  s1 := s[d1];
  for i := 1 to d-1 do
  begin
    if (i mod 2) = 1 then
    begin
      S1 := S1 + S[d1 + p];
      p := p + 1
    end
    else
    begin
      S1 := S1 + S[d1 - l];
      l := l + 1
    end;
  end;
  writeLn(S1)
end.

Var
    S: String;
    t: Int64;
    k: Boolean;

Begin
    Readln(S);
    If Length(S) = 1 then
        Write(S)
    Else If Length(S) mod 2 = 0 then
        For Var i := 1 to Length(S) div 2 do
            Write(S[Length(S) div 2 - i + 1],S[Length(S) div 2 + i])
    Else Begin
        Write(S[Length(S) div 2 + 1]);
        For Var i := 1 to Length(S) div 2 do
            Write(S[Length(S) div 2 + 1 + i],S[Length(S) div 2 + 1 - i])
    End
End.

label
  even, odd, final;
var
  S, temp: string;
  i: integer;

begin
  read(S);
  temp := S;

  if length(S) = 1 then
  begin
    writeln(S);
    exit;
  end;

  if length(S) mod 2 = 0 then
    goto even
  else
    goto odd;

  even:
  temp := S[length(S)];
  for i := 1 to (length(S) div 2)  do
  begin
    temp := S[i] + temp;
    if i = length(S) div 2 then
      break;
    temp := S[length(S) - i] + temp;
  end;
  goto final;

  odd:
  temp := S[1];
  for i := 0 to length(S) div 2 - 1  do
  begin
    temp := S[length(S) - i] + temp;
    temp := S[i + 2] + temp;
  end;
  goto final;

  final:
  writeln(temp);
end.

var s,s1:string;
    a:array[1..50] of char;
    i,j,k:integer;
  begin
  readln(s);
  if length(s) mod 2=1 then k:=(length(s) div 2)+1 else k:=length(s) div 2;
  a[1]:=s[k];
  j:=k+1;
  i:=2;
  while j<=length(s) do begin
      a[i]:=s[j];
      j:=j+1;
      i:=i+2;
  end;
  i:=3;
  j:=k-1;
  while j>=1 do begin
     a[i]:=s[j];
     j:=j-1;
     i:=i+2;
  end;
  for I:=1 to length(s) do
      s1:=s1+a[i];
  write(s1);
  end.

program abc;
var st:string;
    i,uk,s:integer;
    a:array[1..1000] of string;
begin
readln(st);
if length(st) mod 2 = 1 then begin s:=1 end else s:=length(st);
  repeat
    inc(uk);
    a[uk]:=st[s];
    delete(st,s,1);
    if s=1 then begin s:=length(st) end else s:=1;
  until length(st)=0;
for i:=uk downto 1 do st:=st+a[i];
write(st);
end.

var s,c:ansistring;
i,n,m,k,x,fl,l,j:longint;
begin
readln(s);
if length(s)=1 then begin writeln(s); exit; end else
//if length(s)=3 then begin writeln(s); exit; end;

if length(s) mod 2=1 then x:=length(s) div 2+1 else x:=length(s) div 2;
c:=s[x];
if length(s) mod 2=1 then
for i:=1 to (length(s) div 2) do c:=c+s[x+i]+s[x-i] else
for i:=1 to (length(s) div 2)-1 do c:=c+s[x+i]+s[x-i];
if length(s) mod 2=0 then writeln(c+s[length(s)]) else writeln(c);
end.

var
 s,s1:string;
 i,l,n,a,b:longint;
begin
 readln(s);
 l:=length(s);
 n:=l;
 a:=l;
 b:=1;
 if (l=1) then writeln(s) else begin
 for i:=1 to l do begin
  if (n mod 2=0) then begin s1:=s[a]+s1; a:=a-1; end;
  if (n mod 2=1) then begin s1:=s[b]+s1; b:=b+1; end;
  n:=n-1;
  end;
  end;
 writeln(s1);
end.

var
  s, t: string;
  i, k, long, mid: integer;

begin
  readln(t);
  long := length(t);
  if long mod 2 = 0 then
  begin
    mid := length(t) div 2;
    s := s + t[mid];
    for i := 1 to long div 2 - 1 do
    begin
      s := s + t[mid + i];
      s := s + t[mid - i];
    end;
    if long <> 2 then
    s := s + t[mid + i + 1]
    else
    s := s + t[mid + i];
  end
  else
  begin
    mid := length(t) div 2 + 1;
    s := s + t[mid];
    for i := 1 to long div 2 do
    begin
      s := s + t[mid + i];
      s := s + t[mid - i];
    end;
  end;
  write(s);
end.

program p1;

var i, k, c, m:integer;
    s, t:string;

begin
  readln(t);
  if length(t) mod 2 = 0 then
    m := length(t) div 2
  else m := length(t) div 2 + 1;

  s := t[m];

  k:=1;
  i:=1;
  c:=1;
  while k<length(t) do begin
    s:=s+t[m+c*i];
    k:=k+1;
    i:=i*-1;
    if k mod 2 = 1 then
      c:=c+1;
  end;

  writeln(s);

end.

var s,s1,ans:string;
a,b,c,i:longint;
x:char;
begin
 readln(s);
 s1:=s;
 for i:= length(s) downto 1 do
 begin
  if i mod 2 =0 then
   begin
    x:=s1[length(s1)];
    ans:=x+ans;
    delete(s1,length(s1),1);
   end
   else
   begin
    x:=s1[1];
    ans:=x+ans;
    delete(s1,1,1);
   end;
 end;
 writeln(ans);
end.

var
  s1, s2: STRING;
  i, n: integer;

begin
  readln(s1);
  s2:=s1;
  i := 1;
  n:=length(s1) div 2 + length(s1) mod 2;
  s2[1]:=s1[n];
    while abs(i) <n do
    begin
    try
      s2[i*2] := s1[n + i];
      s2[i*2+1] := s1[n - i];
      i:=i+1;
      except;
      end;
      end;
  write(s2);
end.

var i, n, r, p: integer;
    s, t: string;
Begin;
 readln (t);
 n := Length(t);
 r:=(n div 2);
 p:=(n div 2) + 1;
 if (n mod 2 = 0) then begin;
  r:=(n div 2) - 1;
  p:=(n div 2);
 end;
 s:=t[p];
 while (i < r) do begin;
  i:=i+1;
  s:=s+t[p + i];
  s:=s+t[p - i];
 end;
 if (n mod 2 = 0) then s:=s+t[n];
 writeln (s);
end.

Program First;

const
	MaxN = 50;

var
	s: String;
	ans: Array[1..MaxN] of Char;
	l,r,k,i: LongInt;
	c: Char;

Begin
	Readln(s);
	l:=1;
	r:= length(s);
	k:=1;
	while r>=l do begin
		if (r-l) mod 2 = 1 then begin
			c:=s[r];
			ans[k]:=c;
			r-=1;
		end
		else begin
			c:=s[l];
			ans[k]:=c;
			l+=1;
		end;
		k+=1;
	end;

	for i:=k-1 downto 1 do write(ans[i]);

End.

program GG1;
var
s,sp:string;
i,k:longint;
begin
readln(s);
i:=1;//нужно чтобы он два раза прошёл
k:=length(s)-length(s)div 2;//3
sp:=s[k];
if ((k mod 2<>0)and(length(s) mod 4<>1))or(length(s) mod 4=0) then
begin
for i:=1 to length(s) div 2 -1 do
sp:=sp+s[k+i]+s[k-i];
sp:=sp+s[length(s)];
end
else
for i:=1 to length(s) div 2 do//при
sp:=sp+s[k+i]+s[k-i];
if k=1 then
sp:=s;
writeln(sp);
end.

{const fi='DL.INP';
        fo='DL.OUT';}
var s,s1: string;
      vt,i: byte;

begin
        {assign(input,fi); reset(input);
        assign(output,fo); rewrite(output);}
        read(s);
        if (length(s)=1) then begin
                write(s);
                halt;
        end;
        vt:= (length(s) div 2);
        if (length(s) mod 2=0) then dec(vt);
        s1:= copy(s,1,vt);
        delete(s,1,vt);
        i:= 3;
        for vt:= vt downto 1 do begin
                insert(s1[vt],s,i);
                inc(i,2);
        end;
        write(s);
        //close(input); close(output);
end.

var s,t:string;
i,j:longint;
begin
readln(t);
if length(t) mod 2=1 then j:=(length(t) div 2)+1
else j:=length(t) div 2;
s:=s+t[j];
i:=j;
j:=j-1; i:=i+1;
while (j>0) do
begin
s:=s+t[i]+t[j]; i:=i+1; j:=j-1;
end;
if length(t) mod 2=0 then s:=s+t[length(t)];
write(s);
end.

var s:string;
    l,k,i:longint;
begin
  readln(s);
  l:=length(s);
  k:=l div 2;
  if l mod 2<>0
    then k:=k+1;
  write(s[k]);
  i:=0;
  while i<>k do
    begin
      i:=i+1;
      if k+i<=l
      then write(s[k+i]);
      if k-i>0
        then write(s[k-i]);
    end;
end.

Program n;
var s,t:String;
function pl(s:string):string;
var nac, con:Integer; pr,lt,res:string;
Begin
nac:=0;
con:=0;
res:='';

If (length(s) mod 2 <> 0)
 then
 //Сторка нечетная
  While ((nac+con)<length(s)) do
    Begin
    pr:='';
    lt:='';
     //беру последний символ
     lt:=s[1+nac];
     nac:=nac+1;
     If ((nac+con)<length(s)) then
      Begin
       pr:=s[length(s) - con];
       con:=con+1;
      End;
     res:=pr+lt+res;
    End

 else
 While ((nac+con)<length(s)) do
    Begin
    pr:='';
    lt:='';
     //беру последний символ
       pr:=s[length(s) - con];
       con:=con+1;
     If ((nac+con)<length(s)) then
      Begin
       lt:=s[1+nac];
       nac:=nac+1;
      End;
     res:=lt+pr+res;
    End;

 pl:=res;
End;
Begin
Readln(t);
Write(pl(t));
End.

program Project1;
var
new: array [1..100] of char;
arr:array [1..100] of char;
str:string;
i,n,h,x: integer;
begin
readln(str);
n:=length(str);
for i:=1 to n do
begin
arr[i]:=str[i];
end;
x:=n div 2;
h:=x+1;
i:=1;

if n mod 2=0 then
begin
  repeat
  if i mod 2=1 then
  begin
  new[i]:=arr[x];
  x:=x-1;
  end else
  begin
  new[i]:=arr[h];
  h:=h+1;
  end;
  i:=i+1;
  until 0 > x;
end;
//x=2
//h=3
h:=n div 2 +1;
x:=h+1;

if n mod 2=1 then
begin
repeat
 if i mod 2=1 then
 begin
 new[i]:=arr[h];
 h:=h-1;
 end else
 begin
 new[i]:=arr[x];
 x:=x+1;
 end;
 i:=i+1;
 until 0 > h;
 end;

for i:=1 to n do
begin
write(new[i]);
end;
readln();
end.

var
	n, i, j: int64;
	s, s1: string;

begin

	readln(s);
	j := s.length;
	i := 1;

	if (s.length = 1) then
		writeln(s)
	else begin
		if (s.length mod 2 = 0) then
		begin
			while (i <= s.length div 2) and (j > s.length div 2) do
			begin
				s1 += s[j] + s[i];
				i += 1;
				j -= 1;
			end;
		end
		else begin
			while (i <= s.length div 2+1) and (j > s.length div 2) do
			begin
				s1 += s[i] + s[j];
				i += 1;
				j -= 1;
			end;
			delete(s1, s.length, 1);
		end;
		writeln(reverseString(s1));
	end;

end.

var s,s1: string; i: integer;
begin
  readln(s);
  s1:='';
  if(s.Length mod 2 =0) then
    i:=s.Length
  else
    i:=1;
  while s.Length>0 do begin
    s1:=s[i]+s1;
    delete(s,i,1);
    if (i=1)then i:=s.Length
    else i:=1
  end;
  writeln(s1)
end.

var sqwer,answww :string;
i,leng:integer;
begin
readln(sqwer);
leng:= length(sqwer);
answww:= sqwer[leng div 2 + leng mod 2];
for i:=1 to leng div 2 do
begin
  answww:= answww + sqwer[leng div 2 + leng mod 2 +i];
  if leng div 2 + leng mod 2 -i >0 then answww:= answww + sqwer[leng div 2 + leng mod 2 -i];
end;
for i:=1 to leng div 2 do
begin
end;
writeln(answww);
end.

program one;
var
fin,str:string;
x,g,u,ind:integer;
begin
read(str);
setlength(fin,length(str));
u:=1;
g:=1;
if (length(str) mod 2 = 1) and (length(str)<>1) then
    begin
    ind:=(length(str) div 2) + 1;
    while x<=length(str)-1 do
        begin
        fin[u]:=str[ind];
        u:=u+1;
        if u mod 2 = 0 then ind:=ind+g else ind:=ind-g;
        g:=g+1;
        x:=x+1;
        end;
    end;
if (length(str) mod 2 = 0) and (length(str)<>1) then
    begin
    ind:=length(str) div 2;
    while x<=length(str)-1 do
        begin
        fin[u]:=str[ind];
        u:=u+1;
        if u mod 2 = 0 then ind:=ind+g else ind:=ind-g;
        g:=g+1;
        x:=x+1;
        end;
    end;
if length(str) = 1 then fin:=str;
writeln(fin);
end.

var s, temp:string;
    res:array[1..10000000] of string;
    len, i, j:longint;
    flag:boolean;

begin
  flag:= False;
  j:= 0;
  readln(s);

  len:= length(s);

  if (len = 1) then
  begin
    writeln(s);
    exit;
  end;

  if (len mod 2 > 0) then
  begin
    temp:=s[1];
    Delete(s, 1, 1);
    flag:=True;
    len:= len - 1;
  end;

  for i:= len downto len div 2 do
    begin
      j:=j + 2;
      res[j - 1]:= s[i];
      res[j]:= s[len - i + 1];
  end;

  for i:= len downto 1 do
    write(res[i]);

  if (flag= True) then
    write(temp);
end.

{$Coperators ON}
{$mode objfpc}
uses math;
var s,kq:String;
procedure init;
var i,j:Longint;
begin
	readln(s);
	i:=1;
	kq:='';
	j:=Length(s);
	if j mod 2=0 then
		begin
			repeat
				kq:=s[i]+s[j]+kq;
				inc(i);
				dec(j);
			until i>=j;
		end
	else
		begin
			repeat
				if i=j then kq:=s[i]+kq else
				kq:=s[j]+s[i]+kq;
				inc(i);
				dec(j);
			until i>j;
		end;
	writeln(kq);
end;
begin

	init;

end.

var
  s,s1: ansistring;
  i,j,n,m,k : longint;
begin
  readln(s);
  n := length(s);
  k := (n div 2)+(n mod 2);
  if (n mod 2 = 0) then
  begin
    for i := 1 to n div 2 do
    begin
      s1 := s1+s[k-i+1];
      s1 := s1+s[n-k+i];
    end;
  end
  else
  begin
   s1 := s1+s[k];
   for i := 1 to n div 2 do
   begin
     s1 := s1+s[n-k+i+1];
     s1 := s1+s[k-i];
   end;
  end;
  writeln(s1);
end.

program aaa;

var
	s, result: string;
	symbol: string[1];
	len: integer;
	left: boolean;

begin
	readln(s);
	len := length(s);

	if (len - 1) mod 2 > 0 then begin
		left := false;
	end
	else begin
		left := true;
	end;

	result := '';

	while len > 0 do begin
		if left = true then begin
			symbol := s[1];
			delete(s, 1, 1);
			insert(symbol, result, 1);
			left := false;
		end
		else begin
			symbol := s[len];
			delete(s, len, 1);
			insert(symbol, result, 1);
			left := true;
		end;

		len -= 1;
	end;

	//symbol := s[1];
	//insert(symbol, result, 1);

	writeln(result);
end.

var i,t:1..50;s,h:string;
begin
read(s);t:=length(s);
for i:=1 to t div 2 do
if t mod 2=0 then begin h:=s[t-i+1]+h;h:=s[i]+h;end else begin h:=s[i]+h;h:=s[t-i+1]+h;end;
if t mod 2=1 then h:=s[t div 2+1]+h;
print(h);
end.

Var S,decipher:String;
    a:Longint;
Begin
    Readln(S); decipher:='';
    If length(S) mod 2 = 0 then a:=0
    Else a:=1;
    While length(S)>0 do
        Begin
            If a mod 2 = 0 then begin
                decipher:=S[length(S)]+decipher;
                Delete(S,length(S),1);
            End
            Else begin
                decipher:=S[1]+decipher;
                Delete(S,1,1);
            End;
            Inc(a);
        End;
    Writeln(decipher);
End.

var s: string;
    a,b: array [1..50] of char;
    i, t, j, z: integer;
begin
        read (s);
        t:=1;
        while (s[t] <> #0) do
        begin
          a[t]:=s[t];
          inc (t);
        end;
        if t <= 2 then
          begin
            writeln (s);
            halt;
          end;
        dec(t);
        j:=t; z:=2;
        t:= t div 2;
        if j mod 2 <> 0 then inc (t);
        b[1]:= a[t];
        for i:=t+1 to j do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
        z:=3;
        for i:=t-1 downto 1 do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
       for i:= 1 to j do write (b[i]);
       writeln;
end.

program p1;

var i, k, c, m:integer;
    s, t:string;

begin
  readln(t);
  if length(t) mod 2 = 0 then
    m := length(t) div 2
  else m := length(t) div 2 + 1;

  s := t[m];

  k:=1;
  i:=1;
  c:=1;
  while k<length(t) do begin
    s:=s+t[m+c*i];
    k:=k+1;
    i:=i*-1;
    if k mod 2 = 1 then
      c:=c+1;
  end;

  writeln(s);

end.

var
  l, f: integer;
  s, out: string;

begin
  read(s);
  f := 1;
  l := length(s);
  while f <> l do
  begin
    if(l - f) mod 2 <> 0 then
    begin
      out := s[l] + out;
      l -= 1;
    end else begin
      out := s[f] + out;
      f += 1;
    end
  end;
  write(s[l] + out)
end.

var
s1,s2:string;
n,i,j:integer;
a:array[1..50] of integer;

begin
  readln(s1);
  n:=length(s1);
  s2:=n*'0';
  j:=((n-1) div 2) *2 +1;
  for i:=1 to (n+1) div 2 do begin
  a[i]:=j;
  dec(j,2);
  end;
  j:=2;
  for i:=(n+3) div 2 to n do begin
  a[i]:=j;
  inc(j,2);
  end;
  for i:=1 to n do s2[a[i]]:=s1[i];
  writeln(s2);

end.

var
s,s1:string;
i,j,n:integer;
begin
read(s);

if length(s)mod 2=0 then
j:=length(s)div 2
else
j:=length(s)div 2+1;

n:=length(s);
s1:=s[j];
for i:=1 to n-1 do
begin
if i mod 2= 1 then
j:=j+i
              else
j:=j-i;
s1:=s1+s[j];
end;

write(s1);

end.

Var n,i: longint;
    s,t: string;

Begin
readln(s);
t:='';
n:=length(s);
if n mod 2=0
then
for i:=1 to (length(s) div 2) do
  t:=t+s[n+1-i]+s[i]
else
for i:=1 to (length(s) div 2)+1 do
  t:=t+s[i]+s[n+1-i];
for i:=n   downto 1 do write(t[i]);
end.

var
s,t:string;
n,b:longint;
begin
readln(t);
n:=length(t);
if n mod 2 <>0 then
begin
b:=1;
while n<>0 do
begin
s:=t[b]+s;
delete(t,1,1);
n:=n-1;
if n-1>=0 then begin
s:=t[n]+s;
delete(t,n,1);
n:=n-1;
end;
end;
writeln(s);
halt;
end;

if n mod 2 =0 then
b:=n;
while n<>0 do
begin
s:=t[b]+s;
delete(t,n,1);
n:=n-1;
b:=n;
if n-1>=0 then begin
s:=t[1]+s;
delete(t,1,1);
n:=n-1;
b:=n;
end;
end;
writeln(s);
end.

var
  t, s: string;
  i, n: integer;

begin
  readln(t);
  n := length(t);
  for i := 1 to n do
    if length(t) mod 2 = 0 then
    begin
      s := t[length(t)] + s;
      delete(t, length(t), 1);
    end
    else
    begin
      s := t[1] + s;
      delete(t, 1, 1);
    end;
  write(s);
end.

var
   n, k, i, t: int64;
   s, rez: string;

begin
   readln(s);
   if length(s) mod 2 = 0 then rez := ''
   else
   begin
      rez := s[1];
      delete(s, 1, 1);
   end;
   //writeln(s);
   for i := 1 to length(s) div 2 do
   begin
      rez := s[i] + s[length(s) + 1 - i] + rez;
   end;
   write(rez);
end.

var s:string;
    l,k,i:longint;
begin
  readln(s);
  l:=length(s);
  k:=l div 2;
  if l mod 2<>0
    then k:=k+1;
  write(s[k]);
  i:=0;
  while i<>k do
    begin
      i:=i+1;
      if k+i<=l
      then write(s[k+i]);
      if k-i>0
        then write(s[k-i]);
    end;
end.

var
  cipher,s,a: string;
  n,i,r,kol_nech: integer;
begin
  readln(cipher);
  n:=length(cipher);
  kol_nech:=(n+1) div 2;
  if (n mod 2)<>0 then //�����
    begin
      i:=kol_nech;
      a:=copy(cipher,i,1);
      s:=s+a;
      for r:=1 to (n div 2) do
        begin
          a:=copy(cipher,i+r,1);
          s:=s+a;
          a:=copy(cipher,i-r,1);
          s:=s+a;
        end;
     end
   else
     begin
       i:=kol_nech;
       a:=copy(cipher,i,1);
       s:=s+a;
        for r:=1 to ((n div 2)+1) do
          begin
            a:=copy(cipher,i+r,1);
            s:=s+a;
            a:=copy(cipher,i-r,1);
            s:=s+a;
          end;
     end;
   delete(s,n+1,2);
   writeln(s);
 end.

program abc;
var
i,k:integer;
a,s:string;
begin
readln(a);

k:=a.Length div 2;
if a.Length > 1 then
  if a.Length mod 2 = 0 then
    for i:=k downto 1 do
    begin
      s:=s+a[i]+a[2*k-i+1];
    end
  else
    begin
    s:=a[a.Length div 2+1];
    for i:=k downto 1 do
      begin
        s:=s+a[(2*(k+1)-i)]+a[i];
      end;
    end
else
writeln(a);
writeln(s);
end.

var s:ansistring;
    i,c:longint;
begin
  readln(s);
  for i:=1 to length(s) do
  begin
    write(s[(length(s)+1)>>1+c]);
    if i mod 2=1 then c:=1-c
    else c:=-c;
  end;
end.

var s,s1: string; i: integer;
begin
  readln(s);
  s1:='';
  if(s.Length mod 2 =0) then
    i:=s.Length
  else
    i:=1;
  while s.Length>0 do begin
    s1:=s[i]+s1;
    delete(s,i,1);
    if (i=1)then i:=s.Length
    else i:=1
  end;
  writeln(s1)
end.

var s,o:string;
i,n,t:longint;
begin
readln(s);
n:=length(s);
if n mod 2=0 then t:=n div 2 else t:=n div 2+1;
for i:=1 to n do
  if i mod 2=0 then o:=o+s[t+i div 2] else o:=o+s[t-i div 2];
writeln(o);
end.

var
  s: string;
  r: string;
  i: integer;

begin
  readln(s);
  if (Length(s) mod 2 = 0) then
    for i := 1 to Length(s) div 2 do
      r := s[i] + s[Length(s) + 1 - i] + r
  else
  begin
    for i := 1 to Length(s) div 2 do
    begin
      r := s[Length(s) + 1 - i] + s[i] + r;
    end;
    r := s[Length(s) div 2 + 1] + r
  end;
  write(r);
end.

program tehnocup;

var txt,st:string;
    s: array[1..1000] of char;
	i:integer;

begin
	Readln(txt);
	if length(txt) mod 2 = 0 then
	begin
        s[1]:=txt[length(txt) div 2];
        for i:=1 to length(txt) do
	    begin
	       if i < length(txt) div 2 then
	       begin
	        s[length(txt)-1-2*(i-1)]:=txt[i];
	       end;
	       if i > length(txt) div 2 then
	       begin
	        s[(i-length(txt) div 2)*2]:=txt[i];
	       end;

	    end;
	end
	else begin
	    s[1]:=txt[length(txt) div 2+1];
	    for i:=1 to length(txt) do
	    begin
	        if i < length(txt) div 2+1 then
	        begin
	            s[length(txt)-2*(i-1)]:=txt[i];
	        end;
	        if i > length(txt) div 2+1 then
	        begin
	            s[2*(i-(length(txt) div 2+1))]:=txt[i];
	        end;
	    end;
	end;
	for i:=1 to length(txt) do st:=st+s[i];
	Writeln(st);
end.

var f1,f2:text;
    i,a,b,n:longint;
    s,st:string;
        begin
                assign(f1,'');
                reset(f1);
                assign(f2,'');
                rewrite(f2);
                readln(f1,s);
                n:=length(s);
                a:=1;
                b:=n;
                for i:=1 to n do
                begin
                        if (n-i) mod 2=0 then
                        begin st:=s[a]+st; inc(a); end else
                        begin st:=s[b]+st; dec(b); end;
                end;
                writeln(f2,st);
                close(f1);
                close(f2);
        end.

var
tyasdgu, res: string;

function brbl(): char;
begin
if tyasdgu.Length mod 2 = 0 then
begin
Result := tyasdgu[tyasdgu.Length];
var tyasdgu1 := '';
for var i := 1 to tyasdgu.Length - 1 do
tyasdgu1 += tyasdgu[i];
tyasdgu := tyasdgu1;
end
else begin
Result := tyasdgu[1];
if tyasdgu.Length > 1 then begin
var tyasdgu1 := '';
for var i := 2 to tyasdgu.Length do
tyasdgu1 += tyasdgu[i];
tyasdgu := tyasdgu1
end
else tyasdgu := '';
end;
end;

begin
tyasdgu := ReadlnString;

while tyasdgu.Length > 0 do
begin
res += brbl();
end;

var res1 := '';
for var i := res.Length downto 1 do
res1 += res[i];

Write(res1);
end.

var f : text;
i,j,g : integer;
a : array[0..50] of char;
n : string;
begin
     {   assigN(f,'AR.INP');
        reset(f); }
        readln(n);
    {    close(f);
        assigN(F,'AR.OUT');
        rewrite(f); }
        j:=0;
        i := length(n)+1;
        g := length(n)+1;
        if length(n) mod 2 = 0 then
                begin
                        repeat
                                dec(i);dec(g);a[g] := n[i];
                                if i=j then break;
                                inc(j);dec(g);a[g] := n[j];
                        until i = j;
                end else
                        begin
                                repeat
                                inc(j);dec(g);a[g] := n[j];
                                if i=j then break;
                                dec(i);dec(g);a[g] := n[i];
                                until i = j;
                        end;
        for i := 1 to length(n) do write(a[i]);
     {   close(f);  }

end.

var a,s,d:integer;
q:string;
w:array [1..51] of char;
begin
read(q); writeln();
for a:=(length(q) div 2)+(length(q) mod 2) downto 1 do w[2*((length(q) div 2)+(length(q) mod 2)-a)+1]:=q[a];
for a:=(length(q) div 2)+(length(q) mod 2)+1 to length(q) do w[2*(a-length(q) div 2-length(q) mod 2)]:=q[a];
for a:=1 to length(q) do write(w[a]);
end.

var s,s1:string;
begin
readln(s);
while length(s)>0 do
if length(s) mod 2 =1 then
begin
s1:=s[1]+s1;
s:=copy(s,2,length(s)-1);
end
else
begin
s1:=s[length(s)]+s1;
s:=copy(s,1,length(s)-1);
end;
writeln(s1);
end.

var a,b,c,d,cop1,cop2,cop3:string;
z,x,y,q,w,u,k:int64;
begin
k:=1;
read (a);
z:=length(a);
w:=z mod 2;
if w<>0 then x:=(z div 2)+1 else x:=(z div 2);
cop1:=copy(a,x,1);
b:=concat(b+cop1);
while y<x do begin
y:=y+1;
q:=y mod 2;
cop2:=copy(a,x+y,1);
cop3:=copy(a,x-y,1);
b:=concat(b,cop2); k:=k+1;
if k<z then b:=concat(b,cop3);
k:=k+1;
end;
writeln(b);
end.

var i,n, r,m,l: integer;
s, s1:string;
begin
read (s);
n:= length(s);
if n=1 then s1:=s else begin
if n mod 2=0 then r:=(n div 2) else
r:=(n div 2)+1;
s1:=copy(s,r,1);
if n mod 2=0 then
begin
for i:=1 to r-1 do
begin
m:=r+i;
l:=r-i;
s1:=s1+copy(s,m,1)+copy(s,l,1);
end;
s1:= s1+copy(s,n,1)
end else
begin
for i:=1 to r do
begin
m:=r+i;
l:=r-i;
s1:=s1+copy(s,m,1)+copy(s,l,1);
end;
end;
end;
write(s1);
end.

var ch,str:string;
begin
        readln(ch);
        str:='';
        while length(ch)<>0 do
            begin
                str:=ch[length(ch)]+str;
                delete(ch,length(ch),1);
                if length(ch)<>0 then
                    str:=ch[1]+str;
                delete(ch,1,1);
            end;
        write(str);
        readln;
end.

var f : text;
i,j,g : integer;
a : array[0..50] of string;
n : string;
begin
     {   assigN(f,'AR.INP');
        reset(f); }
        readln(n);
    {    close(f);
        assigN(F,'AR.OUT');
        rewrite(f);}
        j := 1;
        i := length(n);
        g := length(n);
        if length(n) mod 2 = 0 then
                begin
                        repeat
                        a[g] := n[i];dec(i);
                        dec(g);if i<j then break;
                        a[g] := n[j];
                        if i<=j then break; inc(j);
                        dec(g);
                        until i=j;
                end else
                        begin
                                repeat
                                a[g] := n[j];inc(j);
                                dec(g);if i<j then break;
                                a[g] := n[i];
                                dec(g);
                                if i<=j then break;dec(i);
                                until i=j;
                        end;
        for i := 0 to length(n) do write(a[i]);
       { close(f);   }
end.

var f : text;
i,j,g : integer;
a : array[0..50] of string;
n : string;
begin
     {   assigN(f,'AR.INP');
        reset(f); }
        readln(n);
   {     close(f);
        assigN(F,'AR.OUT');
        rewrite(f); }
        j := 1;
        i := length(n);
        g := length(n);
        if length(n) mod 2 = 0 then
                begin
                        repeat
                        a[g] := n[i];dec(i);
                        dec(g);if i<=j then break;
                        a[g] := n[j];
                        if i<=j then break; inc(j);
                        dec(g);
                        until i=j;
                end else
                        begin
                                repeat
                                a[g] := n[j];
                                dec(g);if i<=j then break;
                                inc(j);
                                a[g] := n[i];
                                dec(g);
                                if i<=j then break;dec(i);
                                until i=j;
                        end;
        for i := 0 to length(n) do write(a[i]);
      {  close(f); }
end.

var s,a:string;   i,j:integer;
begin
 readln(a);
  if length(a)=1 then s:=a else
        begin
         if length(a) div 2 = 0 then
          begin
           s:=a[length(a) div 2];
                for i:=length(a) div 2 -1 downto 1 do
                 s:=s+a[i];
                for i:=length(a) div 2+1 to length(a) do
                begin
                 inc(j);
                 insert(a[i],s,j+1);
                end;
          end;
         if length(a) div 2 <> 0 then
          begin         j:=2;
           s:=a[length(A) div 2+1];
                for i:=length(A) div 2  downto 1 do
                 s:=s+a[i];
                for i:=length(A) div 2+2 to length(A) do
                begin
                 insert(a[i],s,j);
                 j:=j+2;
                end;
          end;end;
writeln(s);
end.

var s: string;
    a,b: array [1..50] of char;
    i, t, j, z: integer;
begin
        read (s);
        t:=1;
        while (s[t] <> #0) do
        begin
          a[t]:=s[t];
          inc (t);
        end;
        if t <= 2 then
          begin
            writeln (s);
            halt;
          end;
        dec(t);
        j:=t; z:=2;
        t:= t div 2;
        b[1]:= a[t];
        for i:=t+1 to j do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
        z:=3;
        for i:=t-1 downto 1 do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
       for i:= 1 to j do write (b[i]);
       writeln;
end.

var s: string;
    a,b: array [1..50] of char;
    i, t, j, z: integer;
begin
        read (s);
        t:=1;
        while (s[t] <> #0) do
        begin
          a[t]:=s[t];
          inc (t);
        end;
        if t <= 1 then
          begin
            writeln (s);
            halt;
          end;
        dec(t);
        j:=t; z:=2;
        t:= t div 2;
        b[1]:= a[t];
        for i:=t+1 to j do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
        z:=3;
        for i:=t-1 downto 1 do
        begin
          b[z]:= a[i];
          z:=z+2;
        end;
       for i:= 1 to j do write (b[i]);
       writeln;
end.

var
	s,t:string;
	i,l:longint;
begin
	readln(s);
	l:=length(s);
	t:='';
	if l mod 2=1 then t:=s[l div 2+1];
	for i:=l div 2 downto 1 do
		t:=t+s[i]+s[l-i+1];
	writeln(t);
end.

var
	n, i, j: int64;
	s, s1: string;

begin

	readln(s);
	j := s.length;
	i := 1;

	if (s.length = 1) then
		writeln(s)
	else begin
		while (i <= s.length div 2) and (j > s.length div 2) do
		begin
			s1 += s[j] + s[i];
			i += 1;
			j -= 1;
		end;

		writeln(reverseString(s1));
	end;

end.

var s, n, c: string;
begin
  read(s);
  if length(s) mod 2 = 0 then
  begin
    while length(s)<> 0 do
    begin
      c:=copy(s,length(s),1);
      delete(s,length(s),1);
      n:=n+c;
      if length(s)<>0 then
      begin
        c:=copy(s,1,1);
        delete(s,1,1);
        n:=n+c;
      end;
    end;
  end
  else
  begin
    while length(s)<> 0 do
    begin
      c:=copy(s,1,1);
      delete(s,1,1);
      n:=n+c;
      if length(s)<>0 then
      begin
        c:=copy(s,1,1);
        delete(s,1,1);
        n:=n+c;
      end;
    end;
  end;
  while length(n) <> 0 do
  begin
    c:=copy(n,length(n),1);
    delete(n,length(n),1);
    s:=s+c;
  end;
  write(s);
end.

var s,t,r:string;
var a,b,c,l:int64;
begin
Read(s);
l:=length(s);
if l=1 then begin Writeln(s); exit; end;
a:=l;
b:=1;
while a>0 do begin
t:=t+s[a];
t:=t+s[b];
a:=a-1;
b:=b+1;
if a=b then begin t:=t+s[a]; break; end;
if b>a then break;
end;
for l:=length(t) downto 1 do Write(t[l]);
end.

var s,t,r:string;
var a,b,c,l,i:int64;
begin
Read(s);
l:=length(s);
if l=1 then begin Writeln(s); exit; end;
if l mod 2 = 1 then begin
c:=(l div 2)+1;
t:=s[c];
for i:=(l div 2) downto 1 do begin
c:=c+1;
t:=t+s[c]+s[i];
end;
Writeln(t);
exit;
end;
a:=l;
b:=1;
while a>0 do begin
t:=t+s[a];
t:=t+s[b];
a:=a-1;
b:=b+1;
if a=b then begin t:=t+s[a]; break; end;
if b>a then break;
end;
Writeln(t);
for l:=length(t) downto 1 do Write(t[l]);
end.

var s,t,r:string;
var a,b,c,l:int64;
begin
Read(s);
l:=length(s);
a:=l;
b:=1;
while a>0 do begin
t:=t+s[a];
t:=t+s[b];
a:=a-1;
b:=b+1;
if a=b then begin t:=t+s[a]; break; end;
if b>a then break;
end;
for l:=length(t) downto 1 do Write(t[l]);
end.

program technocup_2018_otbortur4_A;

var
  s, sres: string;
  i: integer;
begin
  read(s);
  sres := '                                                                                ';
  if (length(s) mod 2 = 1) then begin
     sres[1] := s[length(s) div 2 + 1];
     for i := 1 to length(s) div 2 do begin
      sres[length(s) - i * 2 + 2] := s[length(s) - i + 1];
      sres[length(s) - i * 2 + 1] := s[i];
     end;
  end else begin
    for i := 1 to length(s) div 2 do begin
      sres[length(s) - i * 2 + 2] := s[length(s) - i + 1];
      sres[length(s) - i * 2 + 1] := s[i];
    end;
  end;
  write(sres);
end.

var i,t:1..50;s,h:string;
begin
read(s);t:=length(s);
for i:=1 to t div 2 do begin h:=s[t-i+1]+h;h:=s[i]+h;end;
if t mod 2=1 then h:=s[t div 2+1]+h;
print(h);
end.

var
  s, t: string;
  i, k, long, mid: integer;

begin
  readln(t);
  long := length(t);
  if long mod 2 = 0 then
  begin
    mid := length(t) div 2;
    s := s + t[mid];
    for i := 1 to long div 2 - 1 do
    begin
      s := s + t[mid + i];
      s := s + t[mid - i];
    end;
    if long > mid + i + 1 then
    s := s + t[mid + i + 1]
    else
    s := s + t[mid + i];
  end
  else
  begin
    mid := length(t) div 2 + 1;
    s := s + t[mid];
    for i := 1 to long div 2 do
    begin
      s := s + t[mid + i];
      s := s + t[mid - i];
    end;
  end;
  write(s);
end.

var
n,i,q,e:integer;
s,b:string;
begin
read(s);
e:=1;
q:=2;
n:=length(s);
  if n mod 2 =0 then
  begin
  b:=copy(s,n div 2,2);
  for i:=1 to n-2 do
  begin
  if i mod 2=1 then
    begin
    b:=b+copy(s,(n div 2)-e,1);
    inc(e);
    end
  else
    begin
    b:=b+copy(s,(n div 2)+q,1);
    inc(q);
    end;
     end;
  end
     else
  begin
  b:=copy(s,n div 2 +1,2);
  for i:=1 to n-2 do
  begin
  if i mod 2=1 then
    begin
    b:=b+copy(s,(n div 2)-1-e,1);
    inc(e);
    end
  else
    begin
    b:=b+copy(s,(n div 2)-1+q,1);
    inc(q);
    end;
  end;
  end;
write(b);
end.

var
  s, otv :string; i :longint;
begin
  readln (s);
  i:=(length(s)+1) div 2;
  while length(otv)<>length(s) do
    begin
      otv+=copy(s, i, 1);
      if i<=(length(s)+1) div 2 then
        i:=length(s)-i+1
      else
        i:=length(s)-i;
    end;
  writeln (otv);
end.

Var
    S: String;
    t: Int64;
    k: Boolean;

Begin
    Readln(S);
    If Length(S) = 1 then
        Write(S)
    Else
        For Var i := 1 to Length(S) div 2 do
            Write(S[Length(S) div 2 - i + 1],S[Length(S) div 2 + i])
End.

Var
    S: String;
    t: Int64;
    k: Boolean;

Begin
    Readln(S);
    If Length(S) = 1 then
        Write(S)
    Else If Length(S) mod 2 = 0 then
        For Var i := 1 to Length(S) div 2 do
            Write(S[Length(S) div 2 - i + 1],S[Length(S) div 2 + i])
    Else Begin
        Write(S[Length(S) div 2 + 1]);
        For Var i := 1 to Length(S) div 2 do
            Write(S[Length(S) div 2 + 1 - i],S[Length(S) div 2 + 1 + i])
    End
End.

program GG1;
var
s,sp:string;
a,i,k,l:longint;
begin
readln(s);
a:=1;
i:=1;//нужно чтобы он два раза прошёл
k:=length(s)-length(s)div 2;//3
sp:=s[k];
if k mod 2<>0 then
begin
for i:=1 to length(s) div 2 -1 do
sp:=sp+s[k+i]+s[k-i];
sp:=sp+s[length(s)];
end
else
for i:=1 to length(s) div 2 do//при
sp:=sp+s[k+i]+s[k-i];
writeln(sp);
end.

var s,s2:string; p,i:integer;
begin
readln(s);
p:=length(s) div 2;
 for i:=0 to length(s)-1 do begin
 if i mod 2=0 then
 p:=p-i else p:=p+i;
 s2:=s2+copy(s,p,1);end;
 writeln(s2); end.

function zerc(s:string):string;
var
  p:string;
  i:integer;
begin
  p:='';
  for i:=length(s) downto 1 do
  begin
    p:=p+copy(s,i,1);
    delete(s,i,1);
  end;
  zerc:=p;
end;

var s,t,n:string;
begin
  readln(t);
  s:='';
  n:='';
  if length(t) mod 2=0 then
  while t<>''
  do
  begin
    n:=n+copy(t,length(t),1);
    delete(t,length(t),1);
    n:=n+copy(t,1,1);
    delete(t,1,1);
  end
  else
  begin
  while length(t)<>1 do
  begin
    n:=n+copy(t,length(t),1);
    delete(t,length(t),1);
    n:=n+copy(t,1,1);
    delete(t,1,1);
  end;
  n:=n+t;
  end;
  writeln(zerc(n));
end.

var s,s1:string;
i,j,n,m,k,l:longint;
begin
readln(s);
n:=length(s);
if length(s)=1 then begin writeln(s); exit; end;
if n mod 2=0 then s1:=copy(s,length(s) div 2,2) else s1:=s1+s[length(s) div 2];
for i:=(length(s) div 2)-1 downto 1 do begin s1:=s1+s[i]; s1:=s1+s[length(s)-i+1]; end;
writeln(s1);
end.

var s,s1:string;
i,j,n,m,k,l:longint;
begin
readln(s);
n:=length(s);
if length(s)=1 then begin writeln(s); exit; end;
if n mod 2=0 then s1:=copy(s,length(s) div 2,2) else s1:=s1+s[length(s) div 2];
if n mod 2=0 then
begin
for i:=(length(s) div 2)-1 downto 1 do begin s1:=s1+s[i]; s1:=s1+s[length(s)-i+1]; end;
end else
for i:=(length(s) div 2)+1 to length(s) do begin s1:=s1+s[i]; s1:=s1+s[length(s)-i+1]; end;
writeln(s1);
end.

var
  code, origin: string;
  len: int64;

begin
  readln(code);
  len := length(code);
  if len = 1 then
    write(code)
  else
    while len > 0 do
    begin
      origin := code[len] + origin;
      origin := code[1] + origin;
      delete(code, len, 1);
      delete(code, 1, 1);
      len := length(code);
    end;
  write(origin);
end.

var
  code, origin: string;
  len: int64;

begin
  readln(code);
  len := length(code);
  while len > 0 do
  begin
    origin := code[len] + origin;
    origin := code[1] + origin;
    delete(code, len, 1);
    delete(code, 1, 1);
    len := length(code);
  end;
  write(origin);
end.

LABEL f;
var str, ans:string;
    l, i, g:integer;
    ch:array[1..52] of char;
begin
readln(str);
l:=length(str);
g:=l;
i:=1;
if l>3 then begin
  while g>i do begin
    ch[l]:=str[g];
    ch[l-1]:=str[i];
    l:=l-2;
    i:=i+1;
    g:=g-1;
  end;
  if g=i then ch[1]:=str[i];
  i:=1;
end
else if l=3 then  begin
  ch[1]:=str[2];
  ch[2]:=str[3];
  ch[3]:=str[1];
  end
  else begin
    ans:=str;
    goto f;
  end;
while i<=length(str) do begin
ans:=concat(ans, ch[i]);
i:=i+1;
end;
f:
writeln(ans);
end.

program df;
var
  s,ans,s1:string;
  i,m:integer;
begin
  readln(s);
  m:=1;
  for i:=1 to length(s) do begin

    if i mod 2<>0 then begin
      s1:=copy(s,length(s)+1-m,1);
      ans:=ans+s1;
    end else
    begin
      s1:=copy(s,m,1);
        ans:=ans+s1;
        inc(m);
    end;
  end;
  for i:=length(ans) downto 1 do
  write(ans[i]);
end.

program a;

var
  t, t1, o: string;
  o2, i, k, ch: integer;

begin// techno - ncteho
  read(t);
  k := 1;
  ch := Length(t);
  if Length(t) = 1 then writeln(t) else
    repeat
      o2 := Length(t);o := copy(t, 1, 1) + copy(t, o2, 1);delete(t, o2, 1);delete(t, 1, 1);t1 := o + t1;
    until Length(t) < 1;
  write(t1);
end.

var s,s1: string;
begin
     readln(s);
     if s.Length mod 2=0 then
     for var i:=1 to s.Length div 2 do
     s1:=s1+s[s.Length+1-i]+s[i]
     else begin for var i:=1 to s.Length div 2 do
     s1:=s1+s[i]+s[s.Length+1-i];
     insert(s[s.Length div 2 +1], s1, 1);
     end;
     writeln(ReverseString(s1));
end.

var s,s1: string;
begin
     readln(s);
     if s.Length mod 2=0 then
     for var i:=1 to s.Length div 2 do
     s1:=s1+s[s.Length+1-i]+s[i]
     else begin for var i:=1 to s.Length div 2 do
     s1:=s1+s[i]+s[s.Length+1-i];
     insert(s[s.Length div 2 +1], s1, s1.Length div 2+1);
     end;
     writeln(ReverseString(s1));
end.

program tehnocup;

var txt,s:string;
	i:integer;

begin
	Readln(txt);
	s:=s+txt[1];
    for i:=2 to length(txt) do
    begin
        if i mod 2 = 0 then
        begin
            s:=s+txt[i];
        end
        else begin
            s:=txt[i]+s;
        end;
    end;
	Writeln(s);
end.

var
  s1, s2: string;
  ch, i: longint;

begin
  readln(s1);
  for i := 1 to length(s1) div 2 do
  begin
    s2 := s1[length(s1) - i + 1] + s2;
    s2 := s1[i] + s2;
  end;
  if length(s1) mod 2 = 1 then write(s1[length(s1) div 2 + 1]);
  writeln(s2);
end.

function pal(s:string):string;
var k:integer;
    b:string;
  begin
  k:=length(s);
    if k>1 then
               begin
                 b:=s[k];
                 delete(s,length(s),1);
                 pal:=pal(b)+pal(s);
                 k:=k-1;
               end
           else
               pal:=s[k];
  end;
var s,se,see:string;
begin
readln(s);
se:=pal(s);
delete(se,pos('\',se),length(se)-pos('\',se)+1);
see:=pal(se);
delete(see,pos('.',see),length(see)-pos('.',see)+1);
writeln(see);
end.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  u1, u2, i: integer;
  s, t: string;

begin
  readln(t);
  s := '';
  u1 := 1;
  u2 := length(t);
  for i := 1 to length(t) do
    if (i mod 2 = 0) then
    begin
      s := t[u1] + s;
      inc(u1);
    end
    else
    begin
      s := t[u2] + s;
      dec(u2);
    end;
  writeln(s);
  readln;
end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
s1, s2: string;
i, x: integer;
begin
readln(s1);
s2:=s1;
x:=round(length(s1)/2);
s2[1]:=s1[x];
for i:=1 to length(s1) do
begin
s2[i+i]:=s1[x+i];
s2[i+i+1]:=s1[x-i];
end;
if length(s1)=1 then s2:=s1;
writeln(s2);
//readln;
end.

program zadachaA;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  s, s1: string;
  i, mid, p: integer;

begin
  readln(s);
  s1 := '';
  s := ' ' + s;
  s := s + ' ';
  mid := (length(s) + 1) div 2;
  s1 := s1 + s[mid];
  p := 1;
  for i := 1 to (length(s)) div 2 do begin
    s1 := s1 + s[mid + p];
    s1 := s1 + s[mid - p];
    inc(p);
  end;
  while (pos(' ', s1) > 0) do
    delete(s1, pos(' ', s1), 1);
  writeln(s1);
  readln;
end.

Program RightLeftCipher;
uses math;
var t,S:ansistring; x:longint;
Procedure Decode;
begin   S:='';
        while t<>'' do
        begin   x:=(1+length(t)) div 2;
                S:=S+t[x];
                delete(t,x,1);
        end;
        writeln(S);
end;
begin   {assign(input,'1085A.inp'); reset(input);
        assign(output,'1085A.out'); rewrite(output);}
        readln(t);
        Decode;
        {close(input); close(output);}
end.

Program RightLeftCipher;
uses math;
var t,tr:ansistring; x:longint;
Procedure Decode;
begin   tr:='';
        while t<>'' do
        begin   x:=(1+length(t)) div 2;
                tr:=tr+t[x];
                delete(t,x,1);
        end;
        writeln(tr);
end;
begin   {assign(input,'1085A.inp'); reset(input);
        assign(output,'1085A.out'); rewrite(output);}
        readln(t);
        Decode;
        {close(input); close(output);}
end.

Program RightLeftCipher;
uses math;
var t,S:ansistring; x:longint;
Procedure Decode;
begin   S:='';
        while length(t)>0 do
        begin   x:=(1+length(t)) div 2;
                S:=S+t[x];
                delete(t,x,1);
        end;
        writeln(S);
end;
begin   {assign(input,'1085A.inp'); reset(input);
        assign(output,'1085A.out'); rewrite(output);}
        readln(t);
        Decode;
        {close(input); close(output);}
end.

Program RightLeftCipher;
uses math;
var t,tr:ansistring; x:longint;
Procedure Decode;
begin   tr:='';
        while t<>'' do
        begin   x:=(1+length(t)) div 2;
                tr:=tr+t[x];
                delete(t,x,1);
        end;
        writeln(tr);
end;
begin   readln(t);
        Decode;
end.

Program a;
var
	s, res:string;
	tmp, tmp2, i, next:longint;
begin
	readln(s);
	if length(s)=1 then begin
		writeln(s);
		exit;
	end;
	if length(s)=2 then begin
		res:=s[2];
		res+=s[1];
		writeln(res);
		exit;
	end;
	tmp:=length(s) div 2;
	res:=s[tmp];
	next:=2;
	if length(s) mod 2 = 0 then begin
		for i:=tmp+1 to length(s)-1 do begin
			res+=s[i];
			res+=s[i- next];
			next+=2;
		end;
		res+=s[length(s)];
		writeln(res);
	end
	else begin
		res:=s[tmp+1];
		for i:=tmp+2 to length(s) do begin
			res+=s[i];
			res+=s[i- next];
			next+=2;
		end;
		writeln(res);
	end;
end.

var
  s,s1 : string;
  i,j,n,m,l : longint;
begin
  readln(s);
  l := length(s);
  m := l div 2;
  if (l mod 2 = 1) then
    inc(m);
  write(s[m]);
  for i := 1 to m-1 do
      s1 := s1+s[l-m+i]+s[m-i];
  write(s1);
  if (l > 1) then
    write(s[l]);
end.

var
  s,s1 : ansistring;
  i,j,n,m,l : longint;
begin
  readln(s);
  l := length(s);
  m := l div 2;
  if (l mod 2 = 1) then
    inc(m);
  write(s[m]);
  for i := 1 to m-1 do
    s1 := s1+s[l-m+i]+s[m-i];
  write(s1);
  if (l > 1) then
    write(s[l]);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        if length(s) mod 2=0 then i:=length(S) div 2
        else i:=length(s) div 2 +1;
        if length(s)>1 then write(s[i]);
        u:=1;
        while u<=i-1 do
        begin
                write(s[i+u]);
                write(s[i-u]);
                inc(u);
        end;
        if length(s) mod 2 =0 then write(s[length(S)]);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        i:=length(S) div 2;
        write(s[i]);
        u:=1;
        while u<=i-1 do
        begin
                write(s[i+u]);
                write(s[i-u]);
                inc(u);
        end;
        write(s[length(S)]);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        i:=length(S) div 2;
        if length(s)>1 then write(s[i]);
        u:=1;
        if length(s) mod 2=0 then
        begin
        while u<=i-1 do
        begin
                write(s[i+u]);
                write(s[i-u]);
                inc(u);
        end;
        end
        else
        begin
        while u<=i do
        begin
                write(s[i+u]);
                inc(u);
        end;
        u:=1;
        while u<=i-1 do
        begin
                write(s[i-u]);
                inc(U);
        end;
        end;
        write(s[length(S)]);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        i:=length(S) div 2;
        if length(s)>1 then write(s[i]);
        u:=1;
        while u<=i-1 do
        begin
                write(s[i+u]);
                write(s[i-u]);
                inc(u);
        end;
        write(s[length(S)]);
end.

var s:ansistring;
    u,i:longint;
begin
        read(s);
        i:=length(S) div 2;
        write(s[i]);
        while u<=i do
        begin
                inc(u);
                write(s[i+u]);
                write(s[i-u]);
        end;
end.

var
 s,s1:string;
 i,l,n,a,b:longint;
begin
 readln(s);
 l:=length(s);
 n:=l;
 a:=l;
 b:=1;
 if (l=1) then writeln(s) else begin
 for i:=1 to l do begin
  if (n mod 2=0) then begin s1:=s[a]+s1; a:=a-1; end;
  if (n mod 2=0) then begin s1:=s[b]+s1; b:=b+1; end;
  n:=n-1;
  end;
  end;
 writeln(s1);
end.

program aaa;

var
	s, result: string;
	symbol: string[1];
	len, lenResult: integer;
	left: boolean;

begin
	readln(s);
	len := length(s);

	if len - 1 mod 2 <> 0 then begin
		left := false;
	end
	else begin
		left := true;
	end;

	result := '';
	lenResult := 1;

	while len > 1 do begin
		if left = true then begin
			symbol := s[1];
			delete(s, 1, 1);
			insert(symbol, result, 1);
			left := false;
		end
		else begin
			symbol := s[len];
			delete(s, len, 1);
			insert(symbol, result, 1);
			left := true;
		end;

		len -= 1;
		lenResult += 1;
	end;

	symbol := s[1];
	insert(symbol, result, 1);

	writeln(result);
end.

var
a,ans:string;
begin
readln(a);
if length(a) mod 2=1 then
  begin
  ans:=a[length(a)];
  delete(a,length(a),1);
  end;
while length(a)>0 do
  begin
  ans:=a[1]+a[length(a)]+ans;
  delete(a,1,1);
  delete(a,length(a),1);
  end;
writeln(ans);
end.

var
s,ss:ansistring;
i:longint;
a,b,l:int64;
begin
readln(s);

 l:=length(s);

 if l = 1          then begin write(s);halt;end;

 //s[0]:=s[1];

 if l mod 2 = 0 then a:=l div 2 else a:=l div 2 + 1;

 ss:=s[a];

// if l mod 2 = 0 then b:=l

 for i:=1 to a do
 begin
  ss:=ss+s[a+i];
  if a-i>0 then ss:=ss+s[a-i];

 end;

 write(ss);

                     {
for i:=1 to length(s) do
if i mod 2 = 0 then ss:=ss+s[i] else ss:=s[i]+ss;

write(ss);
                    }

end.

Var s : String;
    i , k , n : Integer ;

Begin
Readln(s); n := Length(s); i := n div 2;
If n mod 2 <> 0 then Inc(i);
Write(S[i]);
While (1 <= i) and (i <= n) do
    Begin
    If k mod 2 = 0 then Begin Write(S[i+k+1]); Inc(i , k + 1); End;
    If k mod 2 <> 0 then Begin Write(S[i-k-1]); Dec(i , k + 1); End;
    Inc(k);
    End;
End.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
s:=s+a[length(a)div 2+i]+a[length(a)div 2-i];
//writeln(i);
end;
write(a[length(a) div 2]);
for i:=1 to length(s)-1 do
write(s[i]);

end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
s:=s+a[length(a)div 2+i]+a[length(a)div 2-i];
//writeln(i);
end;
if length(a)mod 2=0 then write(a[length(a) div 2]);
if length(a)mod 2=1 then write(a[length(a) div 2+1]);
for i:=1 to length(s)-1 do
write(s[i]);

end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
if length(a)mod 2 = 0 then s:=s+a[length(a)div 2+i];//+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2+i+1];

if length(a)mod 2 = 0 then s:=s+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2-i+1];
//writeln(i);                                           7
end;
if length(a)mod 2=0 then write(a[length(a) div 2]);
if length(a)mod 2=1 then write(a[length(a) div 2+1]);
//write(s[1])
write(s);

end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
s:=s+a[length(a)div 2+i]+a[length(a)div 2-i];
//writeln(i);
end;
write(a[length(a) div 2]);

write(s);

end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
if length(a)mod 2 = 0 then s:=s+a[length(a)div 2+i];//+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2+i+1];

if length(a)mod 2 = 0 then s:=s+a[length(a)div 2-i];
if length(a)mod 2 = 1 then s:=s+a[length(a)div 2-i+1];
//writeln(i);                                           7
end;
if length(a)mod 2=0 then write(a[length(a) div 2]);
if length(a)mod 2=1 then write(a[length(a) div 2+1]);
//write(s[1])
if length(s)mod 2 = 1 then begin
for i:=1 to length(s)-1 do
write(s[i]);
halt;
end;
//for i:=1 to length(s) do
write(s);
end.

var
a,s:string;
f,g,h:int64;
i,j:longint;
begin

read(a);
for i:=1 to length(a)div 2 do
begin
s:=s+a[length(a)div 2+i]+a[length(a)div 2-i];
//writeln(i);
end;
if length(a)mod 2=0 then write(a[length(a) div 2]);
if length(a)mod 2=1 then write(a[length(a) div 2+1]);

write(s);

end.