#!/usr/bin/perl -w

use strict;

my $prefer_last = ($ARGV[0]||'') eq 'l' and shift;

my @fields = map {$_>0 ? $_-1 : $_} @ARGV;

my @F;
my @slice;
my $slice;
my $last_slice = '';
my @acc;

my @rsf = reverse sort @fields;

if (defined ($_ = <STDIN>)) {
chomp;
@F = split /\t/, $_, -1;
@slice = @F[@fields];
$last_slice = join "\t", @slice;
print "$last_slice";
for (@rsf) { splice @F, $_, 1 }
@acc = @F;

while (defined ($_=<STDIN>)) {
	chomp;
	@F = split /\t/, $_, -1;

	@slice = @F[@fields];
	$slice = join "\t", @slice;

	if ($slice ne $last_slice) {
		print "\t", join "\t", @acc;
		print "\n$slice";
		@acc = ();
	}

	for (@rsf) { splice @F, $_, 1 }

	my $i=0;
	for (@F) {
		if ($prefer_last && $F[$i] ne '' or !$prefer_last && ($acc[$i]||'') eq '') {
			$acc[$i] = $F[$i];
		}
		$i++;
	}

	$last_slice = $slice;
}

print "\t", join "\t", @acc;
print "\n";
}
