#include <bits/stdc++.h>
using namespace std;
class segment_tree {
using ll = long long;
struct segment {
ll seg, prefix, suffix, res;
friend segment merge(const segment &a, const segment &b) {
return segment( max(max(a.seg,b.seg),a.suffix+b.prefix),
max(a.prefix,a.res+b.prefix),
max(b.suffix,b.res+a.suffix),
a.res+b.res); }
segment(ll s = 0, ll p = 0, ll q = 0, ll r = 0) :
seg(s), prefix(p), suffix(q), res(r) {} } phi;
static inline segment single_item(ll v) {
ll u = max(v,0ll); return segment(u,u,u,v); }
vector<segment> s;
segment update(int k, int l, int r, int i, const segment &t) {
if (l == r)
return s[k] = t;
int m = (l+r)/2, p = m+1, u = 2*k, v = u+1;
return s[k] = (i < p ? merge(update(u,l,m,i,t),s[v]) :
merge(s[u],update(v,p,r,i,t))); }
segment query(int k, int l, int r, int n) const {
if (l > n or r < 1)
return phi;
if (l > 0 and r <= n)
return s[k];
int m = (l+r)/2, p = m+1, u = 2*k, v = u+1;
return merge(query(u,l,m,n),query(v,p,r,n)); }
public:
segment_tree(int n) { s.resize(4*n); }
void update(int n, int i, int v) { update(1,1,n,i+1,single_item(v)); }
ll query(int n) const { return query(1,1,n,n).seg; } };
int main() {
int n, q;
ios_base::sync_with_stdio(false), cin.tie(nullptr), cin >> n >> q;
segment_tree s(n);
for (int a, i = 0; i < n; ++i)
cin >> a, s.update(n,i,a);
cout << s.query(n) << '\n';
for (int i, v; q--; cout << s.query(n) << '\n')
cin >> i >> v, s.update(n,i,v); }
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBzZWdtZW50X3RyZWUgewogICAgdXNpbmcgbGwgPSBsb25nIGxvbmc7CiAgICBzdHJ1Y3Qgc2VnbWVudCB7CiAgICAgICAgbGwgc2VnLCBwcmVmaXgsIHN1ZmZpeCwgcmVzOwogICAgICAgIGZyaWVuZCBzZWdtZW50IG1lcmdlKGNvbnN0IHNlZ21lbnQgJmEsIGNvbnN0IHNlZ21lbnQgJmIpIHsKCSAgICAgICAgcmV0dXJuIHNlZ21lbnQoIG1heChtYXgoYS5zZWcsYi5zZWcpLGEuc3VmZml4K2IucHJlZml4KSwKCSAgICAgICAgICAgICAgICAgICAgICAgIG1heChhLnByZWZpeCxhLnJlcytiLnByZWZpeCksCgkgICAgICAgICAgICAgICAgICAgICAgICBtYXgoYi5zdWZmaXgsYi5yZXMrYS5zdWZmaXgpLAoJICAgICAgICAgICAgICAgICAgICAgICAgYS5yZXMrYi5yZXMpOyB9CiAgICAgICAgc2VnbWVudChsbCBzID0gMCwgbGwgcCA9IDAsIGxsIHEgPSAwLCBsbCByID0gMCkgOgogICAgICAgICAgICBzZWcocyksIHByZWZpeChwKSwgc3VmZml4KHEpLCByZXMocikge30gfSBwaGk7CiAgICBzdGF0aWMgaW5saW5lIHNlZ21lbnQgc2luZ2xlX2l0ZW0obGwgdikgeyAKICAgICAgICBsbCB1ID0gbWF4KHYsMGxsKTsgcmV0dXJuIHNlZ21lbnQodSx1LHUsdik7IH0KICAgIHZlY3RvcjxzZWdtZW50PiBzOwogICAgc2VnbWVudCB1cGRhdGUoaW50IGssIGludCBsLCBpbnQgciwgaW50IGksIGNvbnN0IHNlZ21lbnQgJnQpIHsKICAgICAgICBpZiAobCA9PSByKQogICAgICAgICAgICByZXR1cm4gc1trXSA9IHQ7CiAgICAgICAgaW50IG0gPSAobCtyKS8yLCBwID0gbSsxLCB1ID0gMiprLCB2ID0gdSsxOwogICAgICAgIHJldHVybiBzW2tdID0gKGkgPCBwID8gIG1lcmdlKHVwZGF0ZSh1LGwsbSxpLHQpLHNbdl0pIDogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2Uoc1t1XSx1cGRhdGUodixwLHIsaSx0KSkpOyB9CiAgICBzZWdtZW50IHF1ZXJ5KGludCBrLCBpbnQgbCwgaW50IHIsIGludCBuKSBjb25zdCB7CiAgICAgICAgaWYgKGwgPiBuIG9yIHIgPCAxKQogICAgICAgICAgICByZXR1cm4gcGhpOwogICAgICAgIGlmIChsID4gMCBhbmQgciA8PSBuKQogICAgICAgICAgICByZXR1cm4gc1trXTsKICAgICAgICBpbnQgbSA9IChsK3IpLzIsIHAgPSBtKzEsIHUgPSAyKmssIHYgPSB1KzE7CiAgICAgICAgcmV0dXJuIG1lcmdlKHF1ZXJ5KHUsbCxtLG4pLHF1ZXJ5KHYscCxyLG4pKTsgfQpwdWJsaWM6CiAgICBzZWdtZW50X3RyZWUoaW50IG4pIHsgcy5yZXNpemUoNCpuKTsgfQogICAgdm9pZCB1cGRhdGUoaW50IG4sIGludCBpLCBpbnQgdikgeyB1cGRhdGUoMSwxLG4saSsxLHNpbmdsZV9pdGVtKHYpKTsgfSAKICAgICBsbCBxdWVyeShpbnQgbikgY29uc3QgeyByZXR1cm4gcXVlcnkoMSwxLG4sbikuc2VnOyB9IH07CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBxOyAKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjaW4gPj4gbiA+PiBxOwogICAgc2VnbWVudF90cmVlIHMobik7CiAgICBmb3IgKGludCBhLCBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBjaW4gPj4gYSwgcy51cGRhdGUobixpLGEpOwogICAgY291dCA8PCBzLnF1ZXJ5KG4pIDw8ICdcbic7CiAgICBmb3IgKGludCBpLCB2OyBxLS07IGNvdXQgPDwgcy5xdWVyeShuKSA8PCAnXG4nKQogICAgICAgIGNpbiA+PiBpID4+IHYsIHMudXBkYXRlKG4saSx2KTsgfQogICAgICAgIA==