#include #include #include #include int main() { int size; std::cin >> size; int target; std::cin >> target; std::map nums; for (int i = 0; i < size; i++) { int v; std::cin >> v; nums[v]++; } std::vector counts; std::vector> sets; for (const auto &pair : nums) { auto iter = std::lower_bound(counts.cbegin(), counts.cend(), pair.second); if (iter != counts.cend() && *iter == pair.second) { sets[iter - counts.cbegin()].push_back(pair.first); } else { const auto offset = iter - counts.cbegin(); counts.insert(iter, pair.second); sets.insert(sets.cbegin() + offset, std::vector{pair.first}); } } if (target > counts.size()) { std::cout << 0; } else { const auto &set = sets[counts.size() - target]; std::cout << set.size() << '\n'; for (auto i : set) std::cout << i << ' '; } return 0; }