int main() { #ifndef LOCAL ios_base::sync_with_stdio(false);cin.tie(NULL); #define endl '\n' #endif size_t m; string line; while (cin >> m >> line) { size_t i = 0; string ans; a = line; tree.n = line.size(); memset(tree.t, -1, sizeof tree.t); tree.build(1, 0, line.size() - 1); set<char> seen; memset(choosed, 0, sizeof choosed); while (i < line.size()) { size_t to = min(line.size() - 1, i + m - 1); size_t best = tree.query(1, i, to); /* size_t best = to; for (int j = to; j >= int(i); --j) { if (line[j] < line[best]) best = j; }*/ ans.push_back(line[best]); seen.insert(line[best]); choosed[best] = true; i = best + 1; if (line.size() - best <= m) { break; } } char last = *(--seen.end()); for (size_t i = 0; i < line.size(); ++i) { if (!choosed[i] && line[i] < last) ans.push_back(line[i]); } sort(ans.begin(), ans.end()); cout << ans << endl; } return 0; }