import java.util.Iterator; import java.util.PrimitiveIterator; import java.util.Scanner; import java.util.function.Supplier; import java.util.stream.IntStream; import java.util.stream.Stream; class Main{ static Scanner s=new Scanner(System.in); private void solve(){ int t=gInt()*60+gInt() +15*60 +(int)(Double.parseDouble(s.next().substring(4))*60); t=(t+1440)%1440; System.out.printf("%02d:%02d\n",t/60,t%60); } public static void main(String[]$){ new Main().solve(); } int gInt(){ return Integer.parseInt(s.next()); } long gLong(){ return Long.parseLong(s.next()); } double gDouble(){ return Double.parseDouble(s.next()); } SupplyingIterator ints(int n){ return new SupplyingIterator<>(n,this::gInt); } SupplyingIterator longs(int n){ return new SupplyingIterator<>(n,this::gLong); } SupplyingIterator doubles(int n){ return new SupplyingIterator<>(n,this::gDouble); } SupplyingIterator strs(int n){ return new SupplyingIterator<>(n,s::next); } Range rep(int i){ return Range.rep(i); } Range rep(int f,int t,int d){ return Range.rep(f,t,d); } Range rep(int f,int t){ return rep(f,t,1); } Range rrep(int f,int t){ return rep(f,t,-1); } IntStream REP(int v){ return IntStream.range(0,v); } IntStream REP(int l,int r){ return IntStream.rangeClosed(l,r); } IntStream INTS(int n){ return IntStream.generate(this::gInt).limit(n); } Stream STRS(int n){ return Stream.generate(s::next).limit(n); } } class SupplyingIterator implements Iterable,Iterator{ int t; Supplier supplier; SupplyingIterator(int t,Supplier supplier){ this.t=t; this.supplier=supplier; } @Override public Iterator iterator(){ return this; } @Override public boolean hasNext(){ return t>0; } @Override public T next(){ --t; return supplier.get(); } } class Range implements Iterable,PrimitiveIterator.OfInt{ int to,cur,d; Range(int from,int to,int d){ this.cur=from-d; this.to=to; this.d=d; } Range(int n){ this(0,n-1,1); } @Override public Iterator iterator(){ return this; } @Override public boolean hasNext(){ return cur+d==to||(cur!=to&&(cur