#include #include using namespace std; vector merge(vector& A, vector& B) { int n = A.size() + B.size(); vector result(n); int i = 0; int j = 0; int x = 0; for (int c = 0; c < n; c++) { if (i >= A.size()) { x = B[j]; j++; } else if (j >= B.size()) { x = A[i]; i++; } else if (A[i] > B[j]) { x = B[j]; j++; } else { x = A[i]; i++; } result[c] = x; } return result; } vector merge_sort(vector& v) { if (v.size() <= 1) { return v; } int m = v.size() / 2; vector left(m); vector right(v.size() - m); for (int i = 0; i < m; i++) { left[i] = v[i]; } for (int i = m; i < v.size(); i++) { right[i - m] = v[i]; } left = merge_sort(left); right = merge_sort(right); return merge(left, right); } int main() { int n; cin >> n; vector v(n); for (int i = 0; i < n; i++) { cin >> v[i]; } vector ans = merge_sort(v); for (int i = 0; i < ans.size(); i++) { cout << ans[i] << ' '; } return 0; }