#include <bits/stdc++.h>
const int maxn = 200007;
long long val[maxn], pre[maxn], num[maxn];
int n, m;
std::vector<long long> vec;
std::multiset<int> set;
struct Node {
  int optype, p;
  long long x;
  Node() {}
  Node(int optype, int p, long long x) : optype(optype), p(p), x(x) {}
} node[maxn];
void init() {
  vec.push_back(-1);
  vec.push_back(-2);
  vec.push_back(1 << 30);
}
int getid(long long x) {
  return std::upper_bound(vec.begin(), vec.end(), x) - vec.begin() - 1;
}
void modify(long long bit[], int k, long long v) {
  for (; k <= vec.size(); k += -k & k) bit[k] += v;
}
long long ask(long long bit[], int k) {
  long long ret = 0ll;
  for (; k; k -= -k & k) ret += bit[k];
  return ret;
}
int search(long long v) {
  int pos = 2;
  int l = 2, r = n;
  while (l < r - 1) {
    int mid = (l + r) / 2;
    long long flow = vec[mid] * ask(num, mid - 1) - ask(pre, mid - 1);
    if (flow >= v) {
      r = mid;
    } else {
      l = mid;
    }
  }
  return r;
}
int main() {
  init();
  int op, p;
  long long x;
  std::ios::sync_with_stdio(false);
  std::cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    std::cin >> val[i];
    vec.push_back(val[i]);
  }
  for (int i = 1; i <= m; i++) {
    std::cin >> op;
    if (op == 1)
      std::cin >> p >> x;
    else
      std::cin >> x;
    node[i] = Node(op, p, x);
    if (op == 1) vec.push_back(x);
  }
  std::sort(vec.begin(), vec.end());
  vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
  for (int i = 1; i <= n; i++) {
    int id = getid(val[i]);
    modify(num, id, 1ll);
    modify(pre, id, val[i]);
  }
  n = vec.size();
  for (int i = 1; i <= m; i++) {
    op = node[i].optype;
    p = node[i].p;
    long long v = node[i].x;
    if (op == 1) {
      long long ever = val[p];
      long long now = v;
      val[p] = now;
      int ever_id = getid(ever);
      int now_id = getid(now);
      modify(pre, now_id, now);
      modify(num, now_id, 1ll);
      modify(pre, ever_id, -ever);
      modify(num, ever_id, -1ll);
    } else {
      int limit = search(v);
      double ans = (v + ask(pre, limit - 1)) * 1.0 / ask(num, limit - 1);
      printf("%.15f\n", ans);
    }
  }
}
