#include // {{{ // https://codeforces.com/blog/entry/96344 #pragma GCC optimize("O2,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") using namespace std; template [[nodiscard]] static T MIN() { return std::numeric_limits::min(); } template [[nodiscard]] static T MAX() { return std::numeric_limits::max(); } template [[nodiscard]] static T sc(auto&& x) { return static_cast(x); } template [[nodiscard]] static T sz(auto&& x) { return static_cast(x.size()); } #define prln(...) std::println(__VA_ARGS__) #define pr(...) std::print(__VA_ARGS__) #ifdef LOCAL #define dbgln(...) std::println(__VA_ARGS__) #define dbg(...) std::print(__VA_ARGS__) #endif using ll = long long; using ld = long double; template using ve = std::vector; template using ar = std::array; template using pa = std::pair; template using tu = std::tuple; template using dq = std::deque; template using qu = std::queue; template using pq = std::priority_queue; template using st = std::stack; #define ff first #define ss second #define eb emplace_back #define pb push_back #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() // }}} // NOTE: i'm getting to the point where more complex dsa // indeed may be needed // I faded out like "no, no way i need two DSA", even though // a) that would def work, might as well // NOTE: do not know the apis void solve() { int n, q; cin >> n >> q; ve lights(q); set pts{0, n}; for (auto& e : lights) { cin >> e; pts.insert(e); } // NOTE: this was horrible int maximum = 0; int last = 0; for (int x : pts) { maximum = max(maximum, x - last); last = x; } ve ans(q, 0); ans[q - 1] = maximum; for (int i = q - 1; i > 0; --i) { pts.erase(lights[i]); auto it = pts.upper_bound(lights[i]); int high = *it; int low = *(--it); maximum = max(maximum, high - low); ans[i - 1] = maximum; } for (int i = 0; i < q - 1; ++i) cout << ans[i] << ' '; cout << ans[q - 1]; // set lights{0, n}; // multiset segments{n}; // int light; // while (q--) { // cin >> light; // // auto upper = lights.upper_bound(light); // auto lower = upper; // --lower; // // segments.erase(segments.find(*upper - *lower)); // // segments.insert(*upper - light); // segments.insert(light - *lower); // // lights.insert(light); // // cout << *segments.rbegin() << endl; // } } int main() { // {{{ cin.tie(nullptr)->sync_with_stdio(false); cin.exceptions(cin.failbit); int t = 1; // cin >> t; while (t--) { solve(); } return 0; } // }}}