my @n_m=();
my @n_n=();
my @n_f=();
my @adv=();
my @modadv=();
my @adj=();
my @sub=();
my @verb=();
my @cj=();
my @pron=();
my @prp=();
my @rest=();

while(<>) {
    if    (/adj/) { push @adj, $_; }
    elsif (/sub/) { push @sub, $_; }
    elsif (/[| ]v[it][: ]/) { push @verb, $_; }
    elsif (/\(sich\)/) { push @sich, $_; }
    elsif (/[| ]m[- :]/) { push @n_m, $_; }
    elsif (/[| ]n[- :]/) { push @n_n, $_; }
    elsif (/[| ]f[- :]/) { push @n_f, $_; }
    elsif (/mod adv/) { push @modadv, $_; }
    elsif (/adv/) { push @adv, $_; }
    elsif (/prp[: ]/) { push @prp, $_; }
    elsif (/cj[: ]/) { push @cj, $_; }
    elsif (/pron[: ]/) { push @pron, $_; }
    else  { push @rest, $_; }
}

print "== Существительные ==\n";
print "=== Мужской род ===\n";
print sort(@n_m);
print "\n=== Средний род ===\n";
print sort(@n_n);
print "\n=== Женский род ===\n";
print sort(@n_f);
print "\n\n\n== Глаголы ===\n";
print sort(@verb);
print "\n\n\n== Прилагательные ==\n";
print sort(@adj);
print "\n\n=== Субстантивированные прилагательные и причастия ===\n";
print sort(@sub);
print "\n\n\n== Местоимения ==\n";
print sort(@pron);
print "\n\n\n== Наречия ==\n";
print sort(@adv);
print "\n\n=== Модальные наречия ===\n";
print sort(@modadv);
print "\n\n\n== Предлоги ==\n";
print sort(@prp);
print "\n\n\n== Союзы ==\n";
print sort(@cj);
print "\n\n\n== Прочее ==\n";
print sort(@rest);

