int n, a[MAXn * 2 + 10], begin; signedmain(){ read(n); for (int i = 1; i <= n; ++i) { read(a[i]); a[i + n] = a[i]; } int i = 1, j = 2, k = 0; while (true) { if (i > n || j > n) { begin = min(i, j); break; } k = 0; while (a[i + k] == a[j + k] && k < n) ++k; if (k == n) { begin = i; break; } if (a[i + k] > a[j + k]) { i = i + k + 1; if (i == j) ++i; } else { j = j + k + 1; if (i == j) ++j; } } for (int i = 0; i < n; ++i) { printf("%d ", a[begin + i]); } }