#!/usr/bin/env raku

unit sub MAIN (:m(:$minutes));

constant $DAY-AS-MINUTES = 24 * 60;      #  1440
constant $DAY-AS-SECONDS = 24 * 60 * 60; # 86400

my $s     = 0;
my $e     = 0;
my $max   = 0;
my $count = 0;
my $limit = $minutes ?? $DAY-AS-MINUTES !! $DAY-AS-SECONDS;

for 2 .. $limit -> $start
{
  next unless $start.is-prime;

  for $limit ... $start + 1 -> $end
  {
    next unless $end.is-prime;

    my $length = $end - $start;

    last if $length <= $max;

    next unless $length.is-prime;

    my $new-max = $length > $max;
    
    $s   = $start;
    $e   = $end;
    $max = $length;
  }
}

if $max
{
  say $minutes
  ?? "$s ({ hhmmss($s) }) - $e ({ hhmmss($e) }) = $max min ({ hhmmss($max) })"
  !! "$s ({ mmss($s) }) - $e ({ mmss($e) }) = $max sec ({ mmss($max) })";
}
else
{
  say 0;
}

sub mmss($min)
{
  my ($s, $m) = $min.polymod(60);
  return sprintf("%02d:%02d", $m, $s);
}

sub hhmmss($min)
{
  my ($s, $m, $h) = $min.polymod(60, 60);
  return sprintf("%02d:%02d:%02d", $h, $m, $s);
}
