
my @all = [.words for q:to/EOF/.lines];
master g y9_5 5
slave g y9_6 6
master g y5_1 1
slave g y5_2 2
slave g y5_3 3
EOF
my %all = @all.classify({ .[0] });

for @(%all<master>) {
    my $y = (.[2] ~~ /^y(\d+)/).[0].Str;
    my @slave = %all<slave>.grep({ .[2] ~~ /^y"$y"/ });
    print [ .[0], .[1].uc, | .[2..*-2] ].join(" "), " ";
    say @(@slave>>.[3]).join(" ");
    say .[0..*-2].join(" ") for @slave;
}