#!/usr/bin/perl

use warnings;

$items = 12;

$table = {};
$addresses = {};

foreach (<>) {
    chomp;
    ($time, $address) = split(' ',$_);

    if (!defined $mintime || $time < $mintime) {
	$mintime = $time;
    }

    if (!defined $maxtime || $time > $maxtime) {
	$maxtime = $time;
    }

    (undef,undef,undef,undef,undef,$year,undef,undef,undef) = localtime($time);
    $year += 1900;

    $table->{$year}->{$address}++;
    $addresses->{$address}++;
}

(undef,undef,undef,undef,undef,$minyear,undef,$minyday,undef) = localtime($mintime);
(undef,undef,undef,undef,undef,$maxyear,undef,$maxyday,undef) = localtime($maxtime);

$minyear += 1900;
$maxyear += 1900;

sub ytotal {
    $year = shift;
    return ( $year%4 == 0 and $year%100 != 0 or $year%400 == 0 ) ? 366 : 365;
}

$minytotal = ytotal($minyear);
$maxytotal = ytotal($maxyear);

@sorted = sort { $addresses->{$b} <=> $addresses->{$a} } keys %{$addresses};
@selected = reverse (sort @sorted[0..(@sorted < $items ? @sorted : $items)-1]);

print "date";
foreach $address (@selected) {
    print " $address";
}
print "\n";

foreach $year (sort keys %{$table}) {
    print "${year}0702";
    $y = 0;
    foreach $address (@selected) {
	$value = $table->{$year}->{$address} || 0;
	if ($year == $minyear) {
	    $value = int($value*$minytotal/($minytotal-$minyday+1)+0.5);
	} elsif ($year == $maxyear) {
	    $value = int($value*$maxytotal/$maxyday+0.5);
	}
	$y += $value;
	print " $y";
    }
    print "\n";
}
