Polycarp is going to participate in the contest. It starts at $$$h_1:m_1$$$ and ends at $$$h_2:m_2$$$. It is guaranteed that the contest lasts an even number of minutes (i.e. $$$m_1 \% 2 = m_2 \% 2$$$, where $$$x \% y$$$ is $$$x$$$ modulo $$$y$$$). It is also guaranteed that the entire contest is held during a single day. And finally it is guaranteed that the contest lasts at least two minutes.Polycarp wants to know the time of the midpoint of the contest. For example, if the contest lasts from $$$10:00$$$ to $$$11:00$$$ then the answer is $$$10:30$$$, if the contest lasts from $$$11:10$$$ to $$$11:12$$$ then the answer is $$$11:11$$$.

The first line of the input contains two integers $$$h_1$$$ and $$$m_1$$$ in the format hh:mm. The second line of the input contains two integers $$$h_2$$$ and $$$m_2$$$ in the same format (hh:mm). It is guaranteed that $$$0 \le h_1, h_2 \le 23$$$ and $$$0 \le m_1, m_2 \le 59$$$. It is guaranteed that the contest lasts an even number of minutes (i.e. $$$m_1 \% 2 = m_2 \% 2$$$, where $$$x \% y$$$ is $$$x$$$ modulo $$$y$$$). It is also guaranteed that the entire contest is held during a single day. And finally it is guaranteed that the contest lasts at least two minutes.

Print two integers $$$h_3$$$ and $$$m_3$$$ ($$$0 \le h_3 \le 23, 0 \le m_3 \le 59$$$) corresponding to the midpoint of the contest in the format hh:mm. Print each number as exactly two digits (prepend a number with leading zero if needed), separate them with ':'.

Program A1;
uses math;
var H,M,S1,S2,S3,S4:string; i,code,h1,h2,m1,m2:longint;
Procedure Xuli;
begin   S1:=''; S2:=''; S3:=''; S4:='';
        for i:=1 to length(h) do
        if H[i]<>':' then
        S1:=S1+H[i]
        else begin S2:=copy(H,i+1,2);
                   break;
             end;
        for i:=1 to length(M) do
        if M[i]<>':' then
        S3:=S3+M[i]
        else begin S4:=copy(M,i+1,2);
                   break;
             end;
        val(S1,h1,code); val(S2,m1,code);
        val(S3,h2,code); val(S4,m2,code);
end;
Procedure Cal;
begin   m2:=(m2+h1*60+h2*60+m1) div 2;
        h1:=(m2 div 60) ; m1:=(m2 mod 60);
        str(h1,S1); str(m1,S2);
        if length(S1)=1 then S1:='0'+S1;
        if length(S2)=1 then S2:='0'+S2;
        writeln(S1,':',S2);
end;
begin   {assign(input,'A1.inp'); reset(input);
        assign(output,'A1.out'); rewrite(output);}
        readln(H); readln(M);
        Xuli;
        Cal;
        {close(input); close(output);}

end.

var h1, m1, h2, m2, err, kol, i : longint;
    s : string;

begin
    readln(s);
    val(copy(s, 1, pos(':', s)-1), h1, err);
    delete(s, 1, pos(':', s));
    val(s, m1, err);
    readln(s);
    val(copy(s, 1, pos(':', s)-1), h2, err);
    delete(s, 1, pos(':', s));
    val(s, m2, err);
    while true do begin
        if (h1 = h2) and (m1 = m2) then
            break;
        if m1 = 59 then begin
            inc(h1);
            m1:=0;
        end else
            inc(m1);
        inc(kol);
    end;
    for i:=1 to kol div 2 do begin
        if m2 = 0 then begin
            dec(h2);
            m2:=59;
        end else
            dec(m2);
    end;
    if h2 < 10 then
        write('0',h2)
    else
        write(h2);
    write(':');
    if m2 < 10 then
        write('0', m2)
    else
        write(m2);
end.

const fi='1133A.inp';
        fo='1133A.out';
var f,g:text;
        m,n,i,j,x1,y1,x2,y2,h:longint;
        s1,s2,st:string;
        r1,r2:real;
procedure nhap;
begin
        {assign(f,fi);reset(f);}
        readln(s1);
        read(s2);
        {close(f);}
end;
procedure xuli;
begin
        st:=copy(s1,1,2);
        val(st,x1);
        st:=copy(s2,1,2);
        val(st,x2);
        st:=copy(s1,4,2);
        val(st,y1);
        st:=copy(s2,4,2);
        val(st,y2);
        r1:=(x1+x2)/2;
        h:=trunc(r1);
        m:=(y1+y2) div 2;
        if frac(r1)<>0 then m:=m+30;
        if m>=60 then
        begin
                h:=h+1;
                m:=m mod 60;
        end;
end;
procedure xuat;
begin
        {assign(g,fo);rewrite(g);}
        str(h,s1);
        str(m,s2);
        if (length(s1)=1) then  s1:='0'+s1;
        if (length(s2)=1) then  s2:='0'+s2;
        write(s1,':',s2);
        {close(g); }
end;
begin
        nhap;
        xuli;
        xuat;
end.

const fi='input.txt';
      fo='output.txt';
var h1,h2,h3,m1,m2,m3:longint;
    a,b:string;

BEGIN
        //assign(input,fi); reset(input);
        //assign(output,fo); rewrite(output);

        readln(a);
        readln(b);

        h1:=(ord(a[1])-48)*10+(ord(a[2])-48);
        m1:=(ord(a[4])-48)*10+(ord(a[5])-48);
        h2:=(ord(b[1])-48)*10+(ord(b[2])-48);
        m2:=(ord(b[4])-48)*10+(ord(b[5])-48);

        h3:=h2-h1;
        m3:=m2-m1;
        if m3<0 then begin
                m3:=m3+60;
                dec(h3);
        end;
        m3:=m1+m3 div 2;
        if h3 mod 2>0 then m3:=m3+30;
        h3:=h1+h3 div 2;
        if m3>60 then begin
                m3:=m3 mod 60;
                inc(h3);
        end;

        if m3>=60 then begin
                h3:=h3+m3 div 60;
                m3:=m3 mod 60;
        end;

        if h3<10 then write(0,h3) else write(h3);
        write(':');
        if m3<10 then write(0,m3) else write(m3);

        //close(input);
        //close(output);
END.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    mid := ((60*etimeh - 60*stimeh) +(etimem - stimem)) div 2;

    stimeh := stimeh + mid div 60;

    stimem := stimem + mid mod 60;

    if stimem >= 60 then
    begin

        stimeh := stimeh + stimem div 60;
        stimem := stimem mod 60;
    end;

    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);
end.

const fi='';
      fo='';
var f:text;
    s,s1,st,st1,kq,ss,ss1,kqs,kqs1:ansistring;
    so,so1,d,d1,sso,sso1,t1,t2,t3,h3,m3:longint;

begin
   assign(f,fi);reset(f);
   readln(f,st);
   readln(f,st1);

   assign(f,fo);rewrite(f);
   s:=st[1]+st[2];
   s1:=st[4]+st[5];
   ss:=st1[1]+st1[2];
   ss1:=st1[4]+st1[5];
   val(s,so);
   val(s1,so1);
   val(ss,sso);
   val(ss1,sso1);
   t1:=so*60+so1;
   t2:=sso*60+sso1;
   t3:=(t1+t2) div 2;
   h3:=t3 div 60;
   m3:=t3 mod 60;
   str(h3,kqs);
   str(m3,kqs1);
   if length(kqs) = 1 then kqs:='0'+kqs;
   if length(kqs1)=1 then kqs1:='0'+kqs1;
   kq:=kqs+':'+kqs1;
   write(f,kq);
   close(f);
end.

Var S,F,SS1,SS2:String;
    num1,num2,num3,num4:Longint;
Begin
    Readln(S); Readln(F);
    Val(Copy(S,1,2),num1);
    Val(Copy(S,4,2),num2);
    Val(Copy(F,1,2),num3);
    Val(Copy(F,4,2),num4);
    Str((num1+num3) div 2,SS1);
    If (num2+num4) div 2 + (num1+num3) mod 2 * 30 > 59 then begin
        Str((num1+num3) div 2 + 1,SS1);
        Str((num2+num4) div 2 + (num1+num3) mod 2 * 30 - 60,SS2);
    End
    Else Str((num2+num4) div 2 + (num1+num3) mod 2 * 30,SS2);
    If length(SS1)=1 then SS1:='0'+SS1;
    If length(SS2)=1 then SS2:='0'+SS2;
    Writeln(SS1+':'+SS2);
End.

Var  a,b:array[0..6] of byte;
     kq,kq1,kq2,kq3,m,m1,i,kq4:integer;
     s,ss,t,t1:string;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Readln(s);
  Readln(ss);

  For i:=1 to length(s) do
   if (s[i]<>':') then
    begin
      a[i]:=ord(s[i]) - 48;
      b[i]:=ord(ss[i]) - 48;
    end;
  kq:= 10*a[1]+a[2];
  kq1:=10*b[1]+b[2];
  kq2:= 10*a[4]+a[5];
  kq3:= 10*b[4]+b[5];
  // m:= (kq+kq1) div 2;
 //  m1:=(kq2+kq3) div 2;
 //  If (m1 >60) then
 //   begin
  //   m:=m+1;
    // m1:=m1-60;
  //  end;
  {If (kq2 =0) and (kq3=0) then
   begin
    m:= (kq+kq1) div 2;
    str(m,t1);
    t1:=t1+':';
    t1:=t1+'30';
   end
     else
      begin }
       m:=(kq1*60+kq3)-(kq*60+kq2);
       m:= m div 2;
       kq4:=kq2+m;
       m1:= kq4 div 60;
       kq:=kq+m1;
       str(kq,t1);
       If (length(t1)<>2) then t1:='0'+t1;
       kq4:=kq4 - (m1*60);
       str(kq4,t);
       If (length(t)<>2) then t:='0'+t;
       t1:=t1+':';
       t1:=t1+t;

   Writeln(t1);
  Close(input);
  Close(output);
End.

 var j,l,r,code:longint;
 h1,h2,h3,m1,m2,m3:longint;
 t1,t2,t3:longint;
 c:char;
s,s1:string;
er:integer;
begin

readln(s);
s1:=copy(s,1,2);
val(s1,h1,er);
s1:=copy(s,4,2);
val(s1,m1,er);
t1:=60*h1+m1;
readln(s);
s1:=copy(s,1,2);
val(s1,h2,er);
s1:=copy(s,4,2);
val(s1,m2,er);
t2:=60*h2+m2;
t3:=round((t1+t2)/2);
h3:=t3 div 60;
m3:=t3 mod 60;
if (h3<10) then write('0',h3)
else write(h3);
write(':');
if (m3<10) then write('0',m3)
else write(m3);
end.

var h1,m1,h2,m2:longint;tg:qword;k:string;
begin

 readln(k);
 val(copy(k,1,2),h1);
 val(copy(k,pos(':',k)+1,2),m1);
 readln(k);
 val(copy(k,1,2),h2);
 val(copy(k,pos(':',k)+1,2),m2);
 tg:=(h2-h1)*60+m2-m1;
 tg:=tg div 2;m1:=m1+tg;
 while m1>=60 do
  begin
   dec(m1,60);inc(h1);
  end;
 if h1>=10 then write(h1,':') else write('0',h1,':');
 if m1>=10 then write(m1) else write('0',m1);

end.

program jam;

var
s:string;
jam1,jam2:longint;
menit1,menit2:longint;
temp1,temp2:string;
selisihJam,selisihMenit:longint;
tambahanJam:longint;
tambahanMenit:longint;
totalMenit:longint;
hasilMenit,hasilJam:longint;

begin
	readln (s);
	temp1 := s[1] + s[2];
	temp2 := s[4] + s[5];
	val (temp1, jam1);
	val (temp2, menit1);
	readln (s);
	temp1 := s[1] + s[2];
	temp2 := s[4] + s[5];
	val (temp1, jam2);
	val (temp2, menit2);
	selisihJam := jam2 - jam1;
	selisihMenit := menit2 - menit1;
	totalMenit := (60*selisihJam) + selisihMenit;
	totalMenit := totalMenit div 2;
	tambahanJam := totalMenit div 60;
	tambahanMenit := totalMenit mod 60;
	hasilJam := jam1+tambahanJam;
	hasilMenit := menit1+tambahanMenit;
	if (hasilMenit >= 60) then
	begin
		hasilJam := hasilJam + (hasilMenit div 60);
		hasilMenit := hasilMenit mod 60;
	end;
	if (hasilJam < 10) then
	begin
		if (hasilMenit < 10) then
		begin
			writeln ('0',hasilJam,':0',hasilMenit);
		end else
		begin
			writeln ('0',hasilJam,':',hasilMenit);
		end;
	end else
	begin
		if (hasilMenit < 10) then
		begin
			writeln (hasilJam,':0',hasilMenit);
		end else
		begin
			writeln (hasilJam,':',hasilMenit);
		end;
	end;
end.

procedure ReadTime (var h, m: Integer);
var
        s: string;

begin
        ReadLn (s);

        h := (Ord (s[1]) - Ord ('0')) * 10 + (Ord (s[2]) - Ord ('0'));
        m := (Ord (s[4]) - Ord ('0')) * 10 + (Ord (s[5]) - Ord ('0'));
end;

procedure WriteTime (mh, mm: Integer);
begin
        if mh <= 9 then
                Write ('0', mh)
        else
                Write (mh);

        Write (':');

        if mm <= 9 then
                Write ('0', mm)
        else
                Write (mm)
end;

var
        h1, m1, h2, m2: Integer;
        mh, mm: Integer;

begin
        ReadTime (h1, m1);
        ReadTime (h2, m2);

        m1 := h1 * 60 + m1;
        m2 := h2 * 60 + m2;

        mm := (m2 + m1) div 2;
        mh := mm div 60;
        mm := mm mod 60;

        WriteTime (mh, mm)
end.

var
 s1,s2:string;
 ch1,ch2,n,i,m1,m2,sum1,sum2,sum:integer;
begin
  readln(s1);
  readln(s2);
  ch1:=strtoint(copy(s1,1,2));
  ch2:=strtoint(copy(s2,1,2));
  m1:=strtoint(copy(s1,4,2));
  m2:=strtoint(copy(s2,4,2));
  //writeln(ch1,' ',m1);
  //writeln(ch2,' ',m2);
  sum1:=ch1 * 60 + m1;
  sum2:= ch2*60 + m2;
  sum:=sum1+sum2;
  sum:=sum div 2;
  ch1:=sum div 60;
  m2:=sum mod 60;
  s1:=inttostr(ch1);
  if length(s1)<2 then
    s1:='0'+s1;
  s2:=inttostr(m2);
   if length(s2)<2 then
    s2:='0'+s2;
  writeln(s1,':',s2);

end.

program kontest;
var
h1,h2,m1,m2,h3:byte;
m3:smallint;
dlit:word;
s,s1:string;
err:integer;
begin
Readln(s);
s1:=Copy(s,1,2);
Val(s1,h1,err);
s1:=Copy(s,4,2);
Val(s1,m1,err);
Readln(s);
s1:=Copy(s,1,2);
Val(s1,h2,err);
s1:=Copy(s,4,2);
Val(s1,m2,err);
h3:=h2-h1;
m3:=m2-m1;
dlit:=60*h3+m3;
dlit:=dlit div 2;
h1:=h1+dlit div 60;
m1:=m1+dlit mod 60;
if m1>=60 then
  begin
  h1+=1;
  m1:=m1 mod 60;
  end;
if h1<10 then write(0,h1,':') else write(h1,':');
if m1<10 then write(0,m1) else write(m1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1=0)and(m2=0) then begin
                           if (h2-h1) mod 2 = 1 then  begin
                                                        m2:=m2+60;
                                                        l:=h1+((h2-h1-1) div 2);
                                                        l1:=(m2-m1) div 2;
                                                      end
                                                else begin
                                                        l:=(h2+h1) div 2;
                                                        l1:=0;
                                                     end;

                          end
                      else if m1>m2 then begin
                                          h2:=h2-1;
                                          m2:=m2+60;
                                          h2:=h2-h1;
                                          l:=h1+(h2 div 2);
                                          l1:=(m2+m1) div 2;

                                         end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    if (h2-h1) mod 2 = 1 then begin h2:=h2-1;m2:=m2+60;end;
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;
 if l1>=60 then begin l:=l+1;l1:=l1 mod 60;end;
 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

program zA;

var
   a, b, s: string;
   h1, m1, h2, m2, code, time: integer;
   h3, m3: integer;

begin
   readln(a);
   readln(b);
   s:=a[1]+a[2];
   val(s, h1, code);
   s:=a[4]+a[5];
   val(s, m1, code);

   s:=b[1]+b[2];
   val(s, h2, code);
   s:=b[4]+b[5];
   val(s, m2, code);

   time:=(h1*60 + m1 + h2*60 + m2) div 2;
   h3:=time div 60;
   m3:=time mod 60;
   if h3<10 then write('0',h3) else write(h3);
   write(':');
   if m3<10 then write('0', m3) else write(m3);
end.

var s,s1:string;h,m,h1,m1,x,y,z:longint;
begin
readln(s);
readln(s1);
h:=strtoint(s[1])*10+strtoint(s[2]);
m:=strtoint(s[4])*10+strtoint(s[5]);
h1:=strtoint(s1[1])*10+strtoint(s1[2]);
m1:=strtoint(s1[4])*10+strtoint(s1[5]);
x:=h*60+m;
y:=h1*60+m1;
z:=(y-x) div 2;
h+=(z+m) div 60;
m:=(z+m) mod 60;
write(h div 10,h mod 10,':',m div 10,m mod 10);
end.

var
s1,s2,wh1,wm1,ans:string;
q1,q2,qq,m1,m2,h1,hq,mq,h2:integer;
begin
readln(s1);
readln(s2);
h1:=strtoint(copy(s1,1,2));
h2:=strtoint(copy(s2,1,2));
m1:=strtoint(copy(s1,4,2));
m2:=strtoint(copy(s2,4,2));
hq:=(h2-h1) div 2;
mq:=(m2-m1) div 2;
if (h2-h1) mod 2 = 1 then begin q1:=h1+hq; q2:=m1+mq+30; end else begin
q1:=h1+hq;
q2:=m1+mq;
end;
if q2>59 then begin q2:=q2-60; inc(q1); end;
wh1:=inttostr(q1);
wm1:=inttostr(q2);
if length(wh1)=1 then wh1:='0'+wh1;
if length(wm1)=1 then wm1:='0'+wm1;
ans:=wh1+':'+wm1;
write(ans);
end.

var
  s1, s2, hh1, hh2, mm1, mm2: string;
  w, q, err, q1, q2, w1, w2, z, a, b: integer;

begin
  readln(s1);
  readln(s2);
  hh1 := copy(s1, 1, 2);
  mm1 := copy(s1, 4, 2);
  hh2 := copy(s2, 1, 2);
  mm2 := copy(s2, 4, 2);
  val(hh1, q1, err);
  val(hh2, q2, err);
  val(mm1, w1, err);
  val(mm2, w2, err);
  a := q2 * 60 + w2;
  b := q1 * 60 + w1;
  z := (a - b) div 2;
  q := (b + z) div 60;
  w := (b + z) mod 60;
  if q < 10 then
    write('0', q)
  else
    write(q);
  write(':');
  if w < 10 then
    write('0', w)
  else
    write(w);
end.

var
  vvod: string;
  h1, h2, m1, m2, min1, min2, razn: integer;
begin
  readln(vvod);
  h1 := StrToInt(copy(vvod, 1, 2));
  m1 := StrToInt(copy(vvod, 4, 2));
  readln(vvod);
  h2 := StrToInt(copy(vvod, 1, 2));
  m2 := StrToInt(copy(vvod, 4, 2));
  min1 := h1 * 60 + m1;
  min2 := h2 * 60 + m2;
  razn := Trunc((min2 - min1) / 2);
  min1 += razn;
  h1 := min1 div 60;
  m1 := min1 - ((min1 div 60) *60);
  if (h1 < 10) and (m1 <10) then
    write('0' + IntToStr(h1) + ':0' + IntToStr(m1))
    else if h1 < 10 then
      write('0' + IntToStr(h1) + ':' + IntToStr(m1))
        else if m1 < 10 then
          write(IntToStr(h1) + ':0' + IntToStr(m1))
            else write(IntToStr(h1) + ':' + IntToStr(m1));
end.

var s,temp:string;
hours,min,start,close,middle,f:integer;

begin
    readln(s);
    temp:=s[1]+s[2];
    val(temp,hours,f);
    temp:=s[4]+s[5];
    val(temp,min,f);
    start:= hours*60 + min;

    readln(s);
    temp:=s[1]+s[2];
    val(temp,hours,f);
    temp:=s[4]+s[5];
    val(temp,min,f);
    close:= hours*60 + min;

    if close<start then close:=close + 24*60;

    middle:= start + (close-start) div 2;

    if (middle div 60 > 23) then middle:= middle - 24*60;

    if (middle div 60 < 10) then write(0);
    write(middle div 60);
    write(':');
    if (middle mod 60 < 10) then write(0);
    write(middle mod 60);
end.

var h1,m1,h2,m2,m,hsr,msr,hsrm : longint;
    s1,s2,h1s,m1s,h2s,m2s : string;
begin
   readln(s1);
   readln(s2);
   h1s:=copy(s1,1,2);
   m1s:=copy(s1,4,2);
   h2s:=copy(s2,1,2);
   m2s:=copy(s2,4,2);
   val(h1s,h1,m);
   val(m1s,m1,m);
   val(h2s,h2,m);
   val(m2s,m2,m);
   hsr:=(h1+h2) div 2;
   msr:=(m1+m2) div 2;
   hsrm:=(h1+h2) mod 2;
   if hsrm>0 then msr:=msr+30;
   if msr>=60 then begin
                   msr:=msr mod 60;
                   inc(hsr);
                   end;
   if hsr<10 then write(0,hsr,':')
             else write(hsr,':');
   if msr<10 then write(0,msr)
             else write(msr);
end.

var
     s1,s2:string;
     res,s,ss1,ss2: integer;
begin
readln(s1);
readln(s2);
ss1:=(strtoint(s1[1])*10+strtoint(s1[2]))*60+(strtoint(s1[4])*10+strtoint(s1[5]));
ss2:=(strtoint(s2[1])*10+strtoint(s2[2]))*60+(strtoint(s2[4])*10+strtoint(s2[5]));
s:=(ss2-ss1)div 2;
res:=ss1+s;
if res div 60<10 then write(0); write(res div 60,':');
if res mod 60<10 then write(0); write(res mod 60);
end.

    program ideone;
    var
    	i,hour,min:integer;
    	a,b:string;
    begin
    	readln(a);
    	readln(b);
        hour:=(StrToInt(copy(a,1,2)) + StrToInt(copy(b,1,2))) * 60;
    	min:=hour + strtoint(copy(a,4,2)) + strtoint(copy(b,4,2));
       	min:= min div 2;
       	hour:= min div 60;
    	min:= min mod 60;
        	if (hour<10) then
    	    if (min<10) then
    	        writeln('0',hour,':0',min) 	   else
    	        writeln('0',hour,':',min)        else
            if (min<10) then
    	        writeln(hour,':0',min)    	    else
    	        writeln(hour,':',min);
    end.

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  st1, st2 : string;
  h1, h2, m1, m2, h3, m3 : integer;
begin
  readln(st1);
  //readln;
  readln(st2);
  h1 := strtoint(copy(st1, 1, 2));
  m1 := strtoint(copy(st1, 4, 2));
  h2 := strtoint(copy(st2, 1, 2));
  m2 := strtoint(copy(st2, 4, 2));
  //writeln(h1, m1, h2, m2);
  m3 := (m1 + m2) div 2;
  m3 := (h1+h2) mod 2 * 30 + m3;
  h3 := (h1 + h2) div 2 + m3 div 60;
  m3 := m3 mod 60;
  if (h3 < 10) then
    write(0);
  write(h3, ':');
  if (m3 < 10) then
    write(0);
  write(m3);
  readln;
  readln;
end.

var
  s1, s2: string;
  x: longint;

function p(c: char): longint;
begin
  result := ord(c) - ord('0');
end;

function f(s: string): longint;
begin
  result := (p(s[1]) * 10 + p(s[2])) * 60 + p(s[4]) * 10 + p(s[5]);
end;

begin
  readln(s1);
  readln(s2);
  x := (f(s1) + f(s2)) div 2;
  if x div 60 < 10 then
    write('0');
  write(x div 60, ':');
  if x mod 60 < 10 then
    write('0');
  write(x mod 60);
end.

                      const eps=0.0000000001;  besk1=200000008;  nnn=4600000;
            besk=80000000000000000;
              modul=1000000007{998244353} ;

   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;
    matr=array[-10..200,-10..200] of int64;
    matr1=^matr;
    var izb,kol,oldpp,t,pos1,pos2,r,razm,kollad,leftx,rightx,lefty,righty,num,dirx,diry,oldii,obr,koludal,maxdl,mindl,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,cc,mnog,nn,t3,t4,t5,t6,posmax,tmax,kold,kk,j2,ttt,ppp,pmin,pmax,limit,posi,posj,diam,oldt,ot1,time,pos,ll,posx,posy,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,nm,smin,cen:int64;
   istart,jstart,ifinish,jfinish,k,i2,i3,step2,k1,k2,pp0,mask,i1,j1,step1, step, i,j:longint;
   zagr,xx,yy,kolizm,test,zz,predok,xold,yold,x1,x0,d,b,a,zsum,y,x,z:array[-200000..1535002] of int64;
    otmat,amat,bmat,cmat:matr;
   gr1,gr2,gr:array[-1..2000,-1..2000] of boolean;
    ddl,ddr:array[-1..5002,-1..5002] of longint;
    prob1,prob2,prob3,pr1new,pr2new,pr3new,pr1,pr2,pr3:zap;
    iii,oldpos,finot,vv,znak:int64;
    aold:mas;  anss:zap;
    sss,ss,ss1,ss2:string;
    newstr,str:array[-1000..200000] of string;
    lll,rrr,v,dist,alpha,phi:extended;
    masmatr:array[-1..101,-1..101,-1..101] of int64;
    zzz,ddnew,koef,polex,ddsum,dd:array[-1..4,-1..1300000] of int64;
    sum,ppos,mma,ma:array[-1000..200005,-1..5] of int64;
    xleft,xright,xplus,xminus,px,py,xc,yc,xxc,yyc:extended;
    del:array[-1..100001,-1..20] of longint;
    z0,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,matrr,ppole,dd3,dd4:array[-10..2000,-10..2200] 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..500005] of int64;
     zanleft,zanright,zan,fl:array[-100000..10000000] of boolean;
     dost:array[-1..210,-1..210,0..3,0..3] of int64;
    sss12:string;ch,ch1,ch2:char;
    pr,hesh,numright,dr: array [-10..206,-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;
     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 zaprmin(left,right:longint):int64;
begin
   if left>=right then zaprmin:=y[left] else
     begin
        if not odd(left) and odd(right) then zaprmin:=zaprmin(left shr 1,right shr 1) else
         begin
          if odd(left) then zaprmin:=min(zaprmin(left+1,right),y[left]);
          if not odd(right) then zaprmin:=min(zaprmin(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 chislo(ss:string):int64;
var t1,t2,p1,p2,p3,p4,ot:int64;
begin
  p1:=ord(ss[1])-48;
  p2:=ord(ss[2])-48;
  p3:=ord(ss[4])-48;
  p4:=ord(ss[5])-48;
  t1:=10*p1+p2;
  t2:=10*p3+p4;
  ot:=60*t1+t2;

  chislo:=ot;

end;

begin
   { assign (input,'D:\Projects\input.txt');reset(input);
      assign (output,'D:\Projects\output.txt'); rewrite(output);
    }
     readln(ss1);
     readln(ss2);

     p1:=chislo(ss1);
     p2:=chislo(ss2);
     if p2<p1 then p2:=p2+24*60;
     p:=(p1+p2) shr 1;
     if p>=24*60 then p:=p-24*60;

    { writeln(p);
     }
   for i:=0 to 2  do for j:=0 to 9 do for i1:=0 to 5 do for j1:=0 to 9 do
     begin
       ss:=chr(i+48)+ chr(j+48)+':'+chr(i1+48)+chr(j1+48);
       if chislo(ss)=p then begin write(ss); goto 1;  end;

     end;

1:             close(output);
end.

program ideone;
uses SysUtils;
var
	s,ss:string;
	i,hh,mm:integer;

begin
	readln(s);
	readln(ss);

	hh:=(StrToInt(copy(s,1,2)) + StrToInt(copy(ss,1,2))) * 60;
	mm:=hh + strtoint(copy(s,4,2)) + strtoint(copy(ss,4,2));

	mm:= mm div 2;

	hh:= mm div 60;
	mm:= mm mod 60;

	if (hh<10) then
	    if (mm<10) then
	        writeln('0',hh,':0',mm)
	   else
	        writeln('0',hh,':',mm)
    else
        if (mm<10) then
	        writeln(hh,':0',mm)
	    else
	        writeln(hh,':',mm);
end.

program Seredina_Kontesta;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var s,t: string;
    h1,h2,m1,m2,w: integer;

begin
 readln(s);
 readln(t);
 val(copy(s,1,2),h1,w);
  val(copy(s,4,2),m1,w);
   h1:=h1*60+m1;
 val(copy(t,1,2),h2,w);
  val(copy(t,4,2),m2,w);
   h2:=h2*60+m2;
 w:=abs(h1-h2) div 2;
 if h1>h2 then h1:=h2;
 h1:=h1+w;
 m1:=h1 mod 60;
 h1:=h1 div 60;
 if h1<10 then write(0,h1,':') else write(h1,':');
 if m1<10 then write(0,m1) else write(m1);
 //readln(t);
end.

Program A1;
uses math;
var H,M,S1,S2,S3,S4:string; h1,h2,m1,m2:byte; i,code:longint;
Procedure Xuli;
begin   S1:=''; S2:=''; S3:=''; S4:='';
        for i:=1 to length(h) do
        if H[i]<>':' then
        S1:=S1+H[i]
        else begin S2:=copy(H,i+1,2);
                   break;
             end;
        for i:=1 to length(M) do
        if M[i]<>':' then
        S3:=S3+M[i]
        else begin S4:=copy(M,i+1,2);
                   break;
             end;
        val(S1,h1,code); val(S2,m1,code);
        val(S3,h2,code); val(S4,m2,code);
end;
Procedure Cal;
begin   m2:=(h2-h1)*60+m2;
        m1:=m2+m1;
        h1:=h1+(m1 div 60) div 2;
        m1:=(m1 mod 60) div 2;
        str(h1,S1); str(m1,S2);
        if length(S1)=1 then S1:='0'+S1;
        if length(S2)=1 then S2:='0'+S2;
        writeln(S1,':',S2);
end;
begin   readln(H); readln(M);
        Xuli;
        Cal;
        close(input); close(output);

end.

Program A1;
uses math;
var S1,S2,h1s,h2s,m1s,m2s,r1,r2:string; i,h1,h2,m1,m2,code,ha,ma:longint;
Procedure Returnback;
begin   h1s:=''; h2s:=''; m1s:=''; m2s:='';
        for i:=1 to length(S1) do
        if i<=2 then begin
        h1s:=h1s+S1[i];
        h2s:=h2s+S2[i];
        end else if i>3 then begin
        m1s:=m1s+S1[i];
        m2s:=m2s+S2[i];
        end;
end;
Procedure Calculate;
begin   val(h1s,h1,code); val(m1s,m1,code);
        val(h2s,h2,code); val(m2s,m2,code);
        if m2=0 then begin
        dec(h2); m2:=m2+60;
        end;
        ha:=(h1+h2) div 2; ma:=(m1+m2) div 2;
        str(ha,r1); str(ma,r2);
        if ha<10 then r1:='0'+r1;
        if ma<10 then r2:='0'+r2;
        writeln(r1,':',r2);
end;
begin   readln(S1); readln(S2);
        Returnback;
        Calculate;
end.

Program A1;
uses math;
var S1,S2,h1s,h2s,m1s,m2s,r1,r2:string; i,h1,h2,m1,m2,code,ha,ma:longint;
Procedure Returnback;
begin   h1s:=''; h2s:=''; m1s:=''; m2s:='';
        for i:=1 to length(S1) do
        if i<=2 then begin
        h1s:=h1s+S1[i];
        h2s:=h2s+S2[i];
        end else if i>3 then begin
        m1s:=m1s+S1[i];
        m2s:=m2s+S2[i];
        end;
end;
Procedure Calculate;
begin   val(h1s,h1,code); val(m1s,m1,code);
        val(h2s,h2,code); val(m2s,m2,code);
        if m2=0 then begin
        dec(h2); m2:=m2+60;
        end;
        if h2=0 then h2:=24;
        ha:=(h1+h2) div 2; ma:=(m1+m2) div 2;
        str(ha,r1); str(ma,r2);
        if ma<10 then r2:='0'+r2;
        writeln(r1,':',r2);
end;
begin   readln(S1); readln(S2);
        Returnback;
        Calculate;
end.

Program A1;
uses math;
var S1,S2,h1s,h2s,m1s,m2s,r1,r2:string; i,h1,h2,m1,m2,code,ha,ma:longint;
Procedure Returnback;
begin   h1s:=''; h2s:=''; m1s:=''; m2s:='';
        for i:=1 to length(S1) do
        if i<=2 then begin
        h1s:=h1s+S1[i];
        h2s:=h2s+S2[i];
        end else if i>3 then begin
        m1s:=m1s+S1[i];
        m2s:=m2s+S2[i];
        end;
end;
Procedure Calculate;
begin   ha:=0; ma:=0;
        val(h1s,h1,code); val(m1s,m1,code);
        val(h2s,h2,code); val(m2s,m2,code);
        if m2<=m1 then begin
        dec(h2); m2:=m2+60;
        end;
        if (h1+h2) mod 2<>0 then ha:=ha+1;
        ha:=ha+(h1+h2) div 2; ma:=ma+(m1+m2) div 2;
        str(ha,r1); str(ma,r2);
        if ha<10 then r1:='0'+r1;
        if ma<10 then r2:='0'+r2
        else if ma=60 then begin
                           r2:='00';
                           inc(ha);
                           str(ha,r1);
                           r1:='0'+r1;
                           end;
        writeln(r1,':',r2);
end;
begin   readln(S1); readln(S2);
        Returnback;
        Calculate;
end.

Program A1;
uses math;
var S1,S2,h1s,h2s,m1s,m2s,r1,r2:string; i,h1,h2,m1,m2,code,ha,ma:longint;
Procedure Returnback;
begin   h1s:=''; h2s:=''; m1s:=''; m2s:='';
        for i:=1 to length(S1) do
        if i<=2 then begin
        h1s:=h1s+S1[i];
        h2s:=h2s+S2[i];
        end else if i>3 then begin
        m1s:=m1s+S1[i];
        m2s:=m2s+S2[i];
        end;
end;
Procedure Calculate;
begin   val(h1s,h1,code); val(m1s,m1,code);
        val(h2s,h2,code); val(m2s,m2,code);
        if m2<m1 then begin
        dec(h2); m2:=m2+60;
        end;
        ha:=(h1+h2) div 2; ma:=(m1+m2) div 2;
        str(ha,r1); str(ma,r2);
        if ha<10 then r1:='0'+r1;
        if ma<10 then r2:='0'+r2
        else if ma=60 then begin
                           r2:='00';
                           inc(ha);
                           str(ha,r1);
                           end;
        writeln(r1,':',r2);
end;
begin   readln(S1); readln(S2);
        Returnback;
        Calculate;
end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := ((etimeh - stimeh) +(etimem - stimem)) div 2;

    stimem := stimem + mid mod 60;
    if stimem = 60 then
    begin
        inc(stimeh, 60);
        stimem := 0;
    end;
    stimeh := stimeh div 60 + mid div 60;
     if stimeh = 24 then
    begin
        stimeh := 0;
    end;
    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    writeln(stimem);

end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := ((etimeh - stimeh) +(etimem - stimem)) div 2;

    stimem := stimem + mid mod 60;
    stimeh := stimeh div 60 + mid div 60;
    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);

end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := (abs(etimeh - stimeh) +abs(etimem - stimem)) div 2;
    stimeh := stimeh div 60;
    stimem := stimem + mid mod 60;
    if stimem >= 60 then
    begin
        inc(stimeh);
        stimem := mid mod 60;
    end;
    stimeh := stimeh + mid div 60;
    if stimeh = 24 then
        stimeh := 0;
    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);
end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := (abs(etimeh - stimeh) +abs(etimem - stimem)) div 2;
    stimeh := stimeh div 60;
    stimem := stimem + mid mod 60;
    if stimem >= 60 then
    begin
        inc(stimeh);
        stimem := mid mod 60;
    end;
    stimeh := stimeh + mid div 60;

    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);
end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := ((etimeh - stimeh) +(etimem - stimem)) div 2;

    stimem := stimem + mid mod 60;
    if stimem = 60 then
    begin
        inc(stimeh, 60);
        stimem := 0;
    end;
    stimeh := stimeh div 60 + mid div 60;
    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);

end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    stimeh := stimeh * 60;
    etimeh := etimeh * 60;

    mid := (abs(etimeh - stimeh) +abs(etimem - stimem)) div 2;
    stimeh := stimeh div 60;
    stimem := stimem + mid mod 60;
    if stimem >= 60 then
    begin
        inc(stimeh, stimem div 60);
        stimem := mid mod 60;
    end;
    stimeh := stimeh + mid div 60;
    if stimeh = 24 then
        stimeh := 0;
    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);
end.

program i1;
var stime, etime: string;
    stimeh, stimem, etimeh, etimem, error, mid: integer;
begin
    readln(stime);
    readln(etime);

    val(copy(stime, 1, 2), stimeh, error);
    val(copy(etime, 1, 2), etimeh, error);
    val(copy(stime, length(stime)-1, 2), stimem, error);
    val(copy(etime, length(etime)-1, 2), etimem, error);

    mid := ((60*etimeh - 60*stimeh) +(etimem - stimem)) div 2;

    stimeh := stimeh + mid div 60;

    stimem := stimem + mid mod 60;

    if stimem >= 60 then
    begin
        stimem := stimem mod 60;
        stimeh := stimeh + stimem div 60;
    end;

    if stimeh < 10 then write(0);
    write(stimeh, ':');
    if stimem < 10 then write(0);
    write(stimem);
end.

const fi='';
      fo='';
var f:text;
    s,s1,st,st1,kqs:ansistring;
    so,so1,d,d1,kq:longint;

begin
   assign(f,fi);reset(f);
   readln(f,st);
   readln(f,st1);

   assign(f,fo);rewrite(f);
   s:=st[1]+st[2]+st[4]+st[5];
   s1:=st1[1]+st1[2]+st1[4]+st1[5];
   val(s,so);
   val(s1,so1);
   d:=so1-so;
   if d=100 then d1:=30 else d1:=d div 2;
   kq:=d1+so;
   str(kq,kqs);
   if length(kqs)=3 then kqs:='0'+kqs;
   insert(':',kqs,3);
   write(f,kqs);
   close(f);
end.

Var S,F,SS1,SS2:String;
    num1,num2,num3,num4:Longint;
Begin
    Readln(S); Readln(F);
    Val(Copy(S,1,2),num1);
    Val(Copy(S,4,2),num2);
    Val(Copy(F,1,2),num3);
    Val(Copy(F,4,2),num4);
    Str((num1+num3) div 2,SS1);
    Str((num2+num4) div 2 + (num1+num3) mod 2 * 30,SS2);
    If length(SS1)=1 then SS1:='0'+SS1;
    If length(SS2)=1 then SS2:='0'+SS2;
    Writeln(SS1+':'+SS2);
End.

Var  a,b:array[0..6] of byte;
     kq,kq1,kq2,kq3,m,m1,i:integer;
     s,ss,t,t1:string;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Readln(s);
  Readln(ss);

  For i:=1 to length(s) do
   if (s[i]<>':') then
    begin
      a[i]:=ord(s[i]) - 48;
      b[i]:=ord(ss[i]) - 48;
    end;
  kq:= 10*a[1]+a[2];
  kq1:=10*b[1]+b[2];
  kq2:= 10*a[4]+a[5];
  kq3:= 10*b[4]+b[5];
   m:= (kq+kq1) div 2;
   m1:=(kq2+kq3) div 2;
   If (m1 >60) then
    begin
     m:=m+1;
     m1:=m1-60;
    end;
  If (kq2 =0) and (kq3=0) then
   begin

    str(m,t1);
    t1:=t1+':';
    t1:=t1+'30';
   end
     else
       begin
        t1:='';
        t:='';
        str(m,t1);
        str(m1,t);
        If (length(t1)<>2) then t1:='0'+t1;
        If (length(t)<>2) then t:='0'+t;
        t1:= t1+':';
        t1:=t1+t;
       end;
   Writeln(t1);
  Close(input);
  Close(output);
End.

Var  a,b:array[0..6] of byte;
     kq,kq1,kq2,kq3,m,m1,i,kq4:integer;
     s,ss,t,t1:string;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Readln(s);
  Readln(ss);

  For i:=1 to length(s) do
   if (s[i]<>':') then
    begin
      a[i]:=ord(s[i]) - 48;
      b[i]:=ord(ss[i]) - 48;
    end;
  kq:= 10*a[1]+a[2];
  kq1:=10*b[1]+b[2];
  kq2:= 10*a[4]+a[5];
  kq3:= 10*b[4]+b[5];
  // m:= (kq+kq1) div 2;
 //  m1:=(kq2+kq3) div 2;
 //  If (m1 >60) then
 //   begin
  //   m:=m+1;
    // m1:=m1-60;
  //  end;
  If (kq2 =0) and (kq3=0) then
   begin
    m:= (kq+kq1) div 2;
    str(m,t1);
    t1:=t1+':';
    t1:=t1+'30';
   end
     else
      begin
       m:=(kq1*60+kq3)-(kq*60+kq2);
       m:= m div 2;
       kq4:=kq2+m;
       m1:= kq4 div 60;
       kq:=kq+m1;
       str(kq,t1);
       If (length(t1)<>2) then t1:='0'+t1;
       kq4:=kq4 - (m1*60);
       str(kq4,t);
       If (length(t)<>2) then t:='0'+t;
       t1:=t1+':';
       t1:=t1+t;
      end;
   Writeln(t1);
  Close(input);
  Close(output);
End.

Var  a,b:array[0..6] of byte;
     kq,kq1,kq2,kq3,m,m1,i:integer;
     s,ss,t,t1:string;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Readln(s);
  Readln(ss);

  For i:=1 to length(s) do
   if (s[i]<>':') then
    begin
      a[i]:=ord(s[i]) - 48;
      b[i]:=ord(ss[i]) - 48;
    end;
  kq:= 10*a[1]+a[2];
  kq1:=10*b[1]+b[2];
  kq2:= 10*a[4]+a[5];
  kq3:= 10*b[4]+b[5];
   m:= (kq+kq1) div 2;
   m1:=(kq2+kq3) div 2;
  If (kq2 =0) and (kq3=0) then
   begin

    str(m,t1);
    t1:=t1+':';
    t1:=t1+'30';
   end
     else
       begin
        t1:='';
        t:='';
        str(m,t1);
        str(m1,t);
        If (length(t1)<>2) then t1:='0'+t1;
        If (length(t)<>2) then t:='0'+t;
        t1:= t1+':';
        t1:=t1+t;
       end;
   Writeln(t1);
  Close(input);
  Close(output);
End.

Var  a,b:array[0..6] of byte;
     kq,kq1,kq2,kq3,m,m1,i:integer;
     s,ss,t,t1:string;

Begin
  Assign(input,'');
  Assign(output,'');
  Reset(input);
  Rewrite(output);
  Readln(s);
  Readln(ss);

  For i:=1 to length(s) do
   if (s[i]<>':') then
    begin
      a[i]:=ord(s[i]) - 48;
      b[i]:=ord(ss[i]) - 48;
    end;
  kq:= 10*a[1]+a[2];
  kq1:=10*b[1]+b[2];
  kq2:= 10*a[4]+a[5];
  kq3:= 10*a[4]+a[5];
   m:= (kq+kq1) div 2;
   m1:=(kq2+kq3) div 2;
  If (kq2 =0) and (kq3=0) then
   begin

    str(m,t1);
    t1:=t1+':';
    t1:=t1+'30';
   end
     else
       begin
        t1:='';
        t:='';
        str(m,t1);
        str(m1,t);
        If (length(t1)<>2) then t1:='0'+t1;
        If (length(t)<>2) then t:='0'+t;
        t1:= t1+':';
        t1:=t1+t;
       end;
   Writeln(t1);
  Close(input);
  Close(output);
End.

program jam;

var
s:string;
jam1,jam2:longint;
menit1,menit2:longint;
temp1,temp2:string;
selisihJam,selisihMenit:longint;
tambahanJam:longint;
tambahanMenit:longint;
totalMenit:longint;
hasilMenit,hasilJam:longint;

begin
	readln (s);
	temp1 := s[1] + s[2];
	temp2 := s[4] + s[5];
	val (temp1, jam1);
	val (temp2, menit1);
	readln (s);
	temp1 := s[1] + s[2];
	temp2 := s[4] + s[5];
	val (temp1, jam2);
	val (temp2, menit2);
	selisihJam := jam2 - jam1;
	selisihMenit := menit2 - menit1;
	totalMenit := (60*selisihJam) + selisihMenit;
	totalMenit := totalMenit div 2;
	tambahanJam := totalMenit div 60;
	tambahanMenit := totalMenit mod 60;
	hasilJam := jam1+tambahanJam;
	hasilMenit := menit1+tambahanMenit;
	if (hasilMenit > 60) then
	begin
		hasilJam := hasilJam + (hasilMenit div 60);
		hasilMenit := hasilMenit mod 60;
	end;
	if (hasilJam < 10) then
	begin
		if (hasilMenit < 10) then
		begin
			writeln ('0',hasilJam,':0',hasilMenit);
		end else
		begin
			writeln ('0',hasilJam,':',hasilMenit);
		end;
	end else
	begin
		if (hasilMenit < 10) then
		begin
			writeln (hasilJam,':0',hasilMenit);
		end else
		begin
			writeln (hasilJam,':',hasilMenit);
		end;
	end;
end.

var
i,n,a,b,c,d,a1,b1,c1,d1,g:integer;
s1,s2,s,s3,s4,s5: string;

begin
readln(s1);
for i:=1 to length(s1)
do
if s1[i]=(':') then  n:=i;
s2:=copy(s1,1,n-1);
val (s2,a,b);
s2:=copy(s1,n+1,length(s1));
val (s2,c,d);

readln(s3);
for i:=1 to length(s3)
do
if s3[i]=(':') then  n:=i;
s4:=copy(s3,1,n-1);
val (s4,a1,b1);
s5:=copy(s3,n+1,length(s3));
val (s5,c1,d1);
g:=a;
a:= a*100 + c;
a1:= a1*100 + c1;
b:= a1-a;
d:= b div 100;
b1:= d*60+ b mod 100;
b:=b1 div 2;

b:= b+c;

b1:= b mod 60;
c:= b div 60;
 writeln(c);

if b1 div 10 <>0 then writeln((g+c),':',b1);
if b1 div 10 =0 then writeln((g+c),':','0',b1);

end.

var
 s1,s2:string;
 ch1,ch2,n,i,m1,m2,sum1,sum2,sum:integer;
begin
  readln(s1);
  readln(s2);
  ch1:=strtoint(copy(s1,1,2));
  ch2:=strtoint(copy(s2,1,2));
  m1:=strtoint(copy(s1,4,2));
  m2:=strtoint(copy(s2,4,2));
  //writeln(ch1,' ',m1);
  //writeln(ch2,' ',m2);
  sum1:=ch1 * 60 + m1;
  sum2:= ch2*60 + m2;
  sum1:=sum1 div 2;
  sum2:=sum2 div 2;
  sum:=sum1+sum2;
  ch1:=sum div 60;
  m2:=sum mod 60;
  s1:=inttostr(ch1);
  if length(s1)<2 then
    s1:='0'+s1;
  s2:=inttostr(m2);
   if length(s2)<2 then
    s2:='0'+s2;
  writeln(s1,':',s2);

end.

program kontest;
var
h1,h2,m1,m2,h3,m3:byte;
dlit:word;
s,s1:string;
err:integer;
begin
Readln(s);
s1:=Copy(s,1,2);
Val(s1,h1,err);
s1:=Copy(s,4,2);
Val(s1,m1,err);
Readln(s);
s1:=Copy(s,1,2);
Val(s1,h2,err);
s1:=Copy(s,4,2);
Val(s1,m2,err);
h3:=h2-h1;
m3:=m2-m1;
dlit:=60*h3+m3;
dlit:=dlit div 2;
h1:=h1+dlit div 60;
m1:=m1+dlit mod 60;
if m1>=60 then
  begin
  h1+=1;
  m1:=m1 mod 60;
  end;
if h1<10 then write(0,h1,':') else write(h1,':');
if m1<10 then write(0,m1) else write(m1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  l:=h2-h1;
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1=0)and(m2=0) then begin
                           h2:=h2-1-h1;
                           m2:=m2+60;
                           l:=h1+(h2 div 2);
                           l1:=(m2-m1) div 2;
                          end
                      else if m1>m2 then begin
                                          h2:=h2-1;
                                          m2:=m2+60;
                                          h2:=h2-h1;
                                          l:=h1+(h2 div 2);
                                          l1:=(m2+m1) div 2;

                                         end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    if (h2-h1) mod 2 = 1 then begin h2:=h2-1;m2:=m2+60;end;
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;
 if l1>=60 then begin l:=l+1;l1:=l1 mod 60;end;
 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1=0)and(m2=0) then begin
                           if (h2-h1) mod 2 = 1 then  begin
                                                        m2:=m2+60;
                                                        l:=h1+(h2 div 2);
                                                        l1:=(m2-m1) div 2;
                                                      end
                                                else begin
                                                        l:=(h2+h1) div 2;
                                                        l1:=0;
                                                     end;

                          end
                      else if m1>m2 then begin
                                          h2:=h2-1;
                                          m2:=m2+60;
                                          h2:=h2-h1;
                                          l:=h1+(h2 div 2);
                                          l1:=(m2+m1) div 2;

                                         end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    if (h2-h1) mod 2 = 1 then begin h2:=h2-1;m2:=m2+60;end;
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;
 if l1>=60 then begin l:=l+1;l1:=l1 mod 60;end;
 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  l:=h2-h1;
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1>m2)or(m1=0)and(m2=0) then begin
                                    h2:=h2-1-h1;
                                    m2:=m2+60;
                                     l:=h1+(h2 div 2);
                                    l1:=(m2-m1) div 2;
                                   end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    if (h2-h1) mod 2 = 1 then begin h2:=h2-1;m2:=m2+60;end;
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;

 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  l:=h2-h1;
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1>m2)or(m1=0)and(m2=0) then begin
                                    h2:=h2-1-h1;
                                    m2:=m2+60;
                                     l:=h1+(h2 div 2);
                                    l1:=(m2-m1) div 2;
                                   end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;

 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  l:=h2-h1;
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1>m2)or(m1=0)and(m2=0) then begin
                                    h2:=h2-1-h1;
                                    m2:=m2+60;
                                     l:=h1+(h2 div 2);
                                    l1:=(m2-m1) div 2;
                                    writeln(l:2,':',l1:2)
                                   end

                               else if h1=h2 then begin
                                                    l1:=(m2+m1) div 2;
                                                    writeln(h1:2,':',l1:2)
                                                  end
                                             else begin
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                    writeln(l:2,':',l1:2)
                                                  end;
end.

Program CF_1133A;
var m1,m2,h1,h2,i,l,l1,f,m,k:integer;
    st1,st2,s,s1:string;
Begin
  readln(st1);
  readln(st2);
  s:=st1;
  delete(s,3,3);
  Val(s,h1,f);
  s1:=st2;
  delete(s1,3,3);
  Val(s1,h2,f);
  l:=h2-h1;
  s:=st1;
  delete(s,1,3);
  Val(s,m1,f);
  s1:=st2;
  delete(s1,1,3);
  Val(s1,m2,f);
  if (m1>m2)or(m1=0)and(m2=0) then begin
                                    h2:=h2-1-h1;
                                    m2:=m2+60;
                                     l:=h1+(h2 div 2);
                                    l1:=(m2-m1) div 2;
                                   end

                               else if h1=h2 then begin
                                                    l:=h1;
                                                    l1:=(m2+m1) div 2;
                                                  end
                                             else begin
                                                    if (h2-h1) mod 2 = 1 then begin h2:=h2-1;m2:=m2+60;end;
                                                    h2:=h2-h1;
                                                    l:=h1+(h2 div 2);
                                                    l1:=(m2+m1) div 2;
                                                 end;
 if l1=60 then begin l:=l+1;l1:=0;end;
 if l<=9 then write(0);
 write(l);
 write(':');
 if l1<=9 then write(0);
 write(l1);
end.

var
s1,s2,wh1,wm1,ans:string;
q1,q2,qq,m1,m2,h1,hq,mq,h2:integer;
begin
readln(s1);
readln(s2);
h1:=strtoint(copy(s1,1,2));
h2:=strtoint(copy(s2,1,2));
m1:=strtoint(copy(s1,4,2));
m2:=strtoint(copy(s2,4,2));
hq:=(h2-h1) div 2;
mq:=(m2-m1) div 2;
q1:=h1+hq;
q2:=m1+mq;
if q2>59 then begin q2:=q2-60; inc(q1); end;
wh1:=inttostr(q1);
wm1:=inttostr(q2);
if length(wh1)=1 then wh1:='0'+wh1;
if length(wm1)=1 then wm1:='0'+wm1;
ans:=wh1+':'+wm1;
write(ans);
end.

var h1,m1,h2,m2,m,hsrd,hsrm,msrd : longint;
    s1,s2,h1s,m1s,h2s,m2s : string;
begin
   readln(s1);
   readln(s2);
   h1s:=copy(s1,1,2);
   m1s:=copy(s1,4,2);
   h2s:=copy(s2,1,2);
   m2s:=copy(s2,4,2);
   val(h1s,h1,m);
   val(m1s,m1,m);
   val(h2s,h2,m);
   val(m2s,m2,m);
   hsrd:=(h2-h1) div 2;
   msrd:=(m2-m1) div 2;
   hsrm:=(h2-h1) mod 2;
   if hsrd>=1 then h1:=h1+hsrd;
   if hsrm>0 then m1:=m1+30;
   m1:=m1+msrd;
   if h1<10 then write(0,h1,':')
            else write(h1,':');
   if m1<10 then writeln(0,m1)
            else writeln(m1);
end.

var
     hour,min,s1,s2:string;
     k1,l1,k2,l2,s: integer;
begin
readln(s1);
readln(s2);
k1:=strtoint(s1[1])*10+strtoint(s1[2]);
l1:=strtoint(s1[4])*10+strtoint(s1[5]);
k2:=strtoint(s2[1])*10+strtoint(s2[2]);
l2:=strtoint(s2[4])*10+strtoint(s2[5]);
s:=(abs(k1-k2)*60+abs(l1-l2))div 2;
if k1+(s div 60)div 2<10 then hour:='0'+inttostr(k1+(s div 60)) else hour:=inttostr(k1+(s div 60));
if l1+(s mod 60)div 2<10 then min:='0'+inttostr(l1+(s mod 60)) else min:=inttostr(l1+(s mod 60));
write(hour,':',min);
end.

var
     hour,min,s1,s2:string;
     k1,l1,k2,l2,s: integer;
begin
readln(s1);
readln(s2);
k1:=strtoint(s1[1])*10+strtoint(s1[2]);
l1:=strtoint(s1[4])*10+strtoint(s1[5]);
k2:=strtoint(s2[1])*10+strtoint(s2[2]);
l2:=strtoint(s2[4])*10+strtoint(s2[5]);
s:=(abs(k1-k2)*60+abs(l1-l2))div 2;
if k1+(s div 60)div 2<10 then hour:='0'+inttostr(k1+(s div 60))+'0' else hour:=inttostr(k1+(s div 60));
if l1+(s mod 60)div 2<10 then min:='0'+inttostr(l1+(s mod 60)) else min:=inttostr(l1+(s mod 60));
write(hour,':',min);
end.

var
  s1, s2: string;
  x: longint;

function p(c: char): longint;
begin
  result := ord(c) - ord('0');
end;

function f(s: string): longint;
begin
  result := (p(s[1]) * 10 + p(s[2])) * 60 + p(s[4]) * 10 + p(s[5]);
end;

begin
  readln(s1);
  readln(s2);
  x := (f(s1) + f(s2)) div 2;
  write(x div 60, ':', x mod 60);
end.

program ideone;
uses SysUtils;
var
	s,ss:string;
	i,hh,mm:integer;

begin
	readln(s);
	readln(ss);

	hh:=(StrToInt(copy(s,1,2)) + StrToInt(copy(ss,1,2))) * 60;
	mm:=hh + strtoint(copy(s,4,2)) + strtoint(copy(ss,4,2));

	mm:= mm div 2;

	hh:= mm div 60;
	mm:= mm mod 60;

	writeln(hh,':',mm);
end.