#include <bits/stdc++.h>
using namespace std;
const long long MAXN = (1 << 20);
const long long bound = (long long)1e11 + 42;
template <typename T>
struct dynamic_fenwick {
  long long sz;
  T tr[MAXN];
  void init(long long _sz) {
    sz = _sz;
    memset(tr, 0, sizeof(tr));
  }
  void update(long long idx, T val) {
    ++idx;
    for (; idx <= sz; idx += (idx & -idx)) tr[idx] += val;
  }
  T query(long long idx) {
    ++idx;
    T ans = 0;
    for (; idx >= 1; idx -= (idx & -idx)) ans += tr[idx];
    return ans;
  }
};
long long n, m;
long long h[MAXN];
void read() {
  cin >> n >> m;
  for (long long i = 1; i <= n; i++) cin >> h[i];
}
long double co;
dynamic_fenwick<long long> t, c;
set<long double> help;
set<pair<long double, long long>> possible;
long long id(long double x) {
  auto it = possible.upper_bound({x, bound});
  return (--it)->second;
}
bool check(long double v) {
  long long cnt = c.query(id(v)), sum = t.query(id(v));
  return (v * (long double)cnt - (long double)sum) >= co;
}
long long coco[MAXN], type[MAXN], pp[MAXN], xx[MAXN];
void solve() {
  help.insert(0.0);
  for (long long i = 1; i <= n; i++) help.insert((long double)h[i]);
  for (long long i = 1; i <= m; i++) {
    cin >> type[i];
    if (type[i] == 1) {
      cin >> pp[i] >> xx[i];
      help.insert((long double)xx[i]);
    } else
      cin >> coco[i];
  }
  long long idx = 1;
  for (auto it : help) possible.insert({it, idx++});
  t.init((long long)1e6 + 42);
  c.init((long long)1e6 + 42);
  for (long long i = 1; i <= n; i++)
    c.update(id(h[i]), 1), t.update(id(h[i]), h[i]);
  for (long long i = 1; i <= m; i++) {
    if (type[i] == 1) {
      long long p = pp[i], x = xx[i];
      t.update(id(h[p]), -h[p]);
      t.update(id(x), x);
      c.update(id(h[p]), -1);
      c.update(id(x), 1);
      h[p] = x;
    } else {
      co = coco[i];
      long double low = 0, high = bound, mid;
      for (long long ops = 0; ops <= 75; ops++) {
        mid = (low + high) / 2.0;
        if (check(mid))
          high = mid;
        else
          low = mid;
      }
      cout << setprecision(9) << fixed << high << '\n';
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  read();
  solve();
  return 0;
}
