import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Scanner;
public class Main {
static final long NANOS_PER_SECOND = 1000_000_000L;
static final long NANOS_PER_MINUTE = NANOS_PER_SECOND * 60;
static final long NANOS_PER_HOUR = NANOS_PER_MINUTE * 60;
static final long NANOS_PER_WORKED_DAY = NANOS_PER_HOUR * 8;
static final long NANOS_PER_HALF_DAY = NANOS_PER_HOUR * 12;
static final long NANOS_PER_DAY = NANOS_PER_HOUR * 24;
public static void main
(String[] args
) { try (Scanner sc
= new Scanner
(System.
in)) { sc.useDelimiter("(?i)([ :]|(?<=\\d)(?=[ap]))");
// Read input
long checkIn = sc.nextInt() * NANOS_PER_HOUR + sc.nextInt() * NANOS_PER_MINUTE;
if (!sc.hasNextDouble()) {
if (sc.next().equalsIgnoreCase("pm")) {
checkIn += NANOS_PER_HALF_DAY;
}
}
long total = (long) (sc.nextDouble() * NANOS_PER_HOUR);
// Do some calculations
long required = NANOS_PER_WORKED_DAY - total % NANOS_PER_WORKED_DAY;
long now = ZonedDateTime.now(ZoneId.of("America/Mexico_City")).toLocalTime().toNanoOfDay();
long elapsed = total + (checkIn > now
? NANOS_PER_DAY - checkIn + now
: now - checkIn);
// Produce output
System.
out.
printf("Tiempo transcurrido: %02dh%02dm%02fs%n",
elapsed / NANOS_PER_HOUR,
elapsed % NANOS_PER_HOUR / NANOS_PER_MINUTE,
elapsed % NANOS_PER_MINUTE / (double) NANOS_PER_SECOND);
System.
out.
printf("Salida a las: %02d:%02d%n",
(checkIn + required) / NANOS_PER_HOUR,
(checkIn + required) % NANOS_PER_HOUR / NANOS_PER_MINUTE);
}
}
}