$| = 1;

my %seen = ();
my @prev = ();

sub w {
	my $n = shift;
	my $w = 0;

	while ($n) {
		my $d = $n % 2;
		$w += $d;
		$n -= $d;
		$n /= 2;
	}

	return $w;
}

sub a {
	my $n = shift;
	my $w = w($n);
	do {
		$prev[$w] += $w;
	} while ($seen{$prev[$w]});
	$seen{$prev[$w]}++;
	return $prev[$w];
}

foreach my $n (1..10_000) {
	my $a = a($n);
	print "$n $a\n";
}