import java.io.*;
import java.util.*;

public class army_vd {

	boolean check(int[] a) {
		for (int i = 0; i < a.length - 1; i++) {
			if (a[i] > a[i + 1]) {
				return false;
			}
		}
		return true;

	}

	void solve() throws IOException {
		int n = nextInt();
		int[] a = new int[n + 2];
		int m = nextInt();
		for (int i = 1; i <= n; i++) {
			a[i] = nextInt();
		}
		a[0] = Integer.MIN_VALUE;
		a[n + 1] = Integer.MAX_VALUE;
		boolean cur = check(a);
		for (int i = 0; i < m; i++) {
			char c = next().charAt(0);
			if (c == '?') {
				if (cur) {
					out.println("YES");
				} else {
					out.println("NO");
				}
			} else {
				int pos = nextInt();
				a[pos] = nextInt();
				boolean now = a[pos - 1] <= a[pos] && a[pos] <= a[pos + 1];
				if (!cur && now) {
					cur = check(a);
				}
				cur &= now;
			}
		}

	}

	void run() throws IOException {
		in = new BufferedReader(new FileReader("army.in"));
		out = new PrintWriter("army.out");
		solve();
		out.close();
	}

	public static void main(String[] args) throws IOException {
		new army_vd().run();
	}

	BufferedReader in;
	StringTokenizer st;
	PrintWriter out;

	String next() throws IOException {
		while (st == null || !st.hasMoreTokens()) {
			st = new StringTokenizer(in.readLine());
		}
		return st.nextToken();
	}

	int nextInt() throws IOException {
		return Integer.parseInt(next());
	}

	long nextLong() throws IOException {
		return Long.parseLong(next());
	}

	double nextDouble() throws IOException {
		return Double.parseDouble(next());
	}

}
