#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
inline long long getint() {
  long long c, l = 0, x;
  for (; !isdigit(c = getchar()); l = c)
    ;
  for (x = c - '0'; isdigit(c = getchar()); x = x * 10 + c - '0')
    ;
  return l == '-' ? -x : x;
}
int sm2[N * 100], lc[N * 100], rc[N * 100];
long long sm1[N * 100];
int cnt, a[N], rt, n, q;
int q1, q2;
long long q3, q4;
void ins(int& o, int l, int r) {
  if (!o) o = ++cnt;
  if (l == r) {
    sm1[o] += l * q2;
    sm2[o] += q2;
    return;
  }
  int mid = (l + r) / 2;
  if (q1 <= mid)
    ins(lc[o], l, mid);
  else
    ins(rc[o], mid + 1, r);
  sm1[o] = sm1[lc[o]] + sm1[rc[o]];
  sm2[o] = sm2[lc[o]] + sm2[rc[o]];
}
void qry(int o, int l, int r) {
  if (!o) return;
  if (l == r) {
    q4 += sm1[o];
    q1 += sm2[o];
    return;
  }
  int mid = (l + r) / 2;
  if (sm1[lc[o]] + q3 + q4 > (long long)(mid + 1) * (q1 + sm2[lc[o]])) {
    q4 += sm1[lc[o]];
    q1 += sm2[lc[o]];
    qry(rc[o], mid + 1, r);
  } else
    qry(lc[o], l, mid);
}
int main() {
  n = getint();
  q = getint();
  for (int i = 1; i <= n; i++) {
    q1 = a[i] = getint();
    q2 = 1;
    ins(rt, 0, 1000000000);
  }
  while (q--) {
    if (getint() == 1) {
      int i = getint(), y = getint();
      q1 = a[i];
      q2 = -1;
      ins(rt, 0, 1000000000);
      q1 = a[i] = y;
      q2 = 1;
      ins(rt, 0, 1000000000);
    } else {
      q3 = getint();
      q4 = 0;
      q1 = 0;
      qry(rt, 0, 1000000000);
      printf("%.10Lg\n", (long double)(q4 + q3) / q1);
    }
  }
  return 0;
}
