import java.util.Arrays;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Scanner;

class Connection
{
	int left, right, dist;
	public Connection(int left, int right, int dist)
	{
		this.left = left;
		this.right = right;
		this.dist = dist;
	}
}

public class PluggingWires_HarryACC {


	static Scanner sc = new Scanner(System.in);


	static PriorityQueue<Connection> dists;
	static int[] xs;




	public static void main(String[] args) {
		
		dists = new PriorityQueue<Connection>((a,b) -> a.dist - b.dist);
		int n = sc.nextInt();
		int m = sc.nextInt();

		int[] wires = new int[m];

		xs = new int[n];
		for(int i = 0; i < n; i++)
			xs[i] = sc.nextInt();

		for(int j = 0; j < m; j++)
			wires[j] = sc.nextInt();

		Arrays.sort(wires);
		
		if(m > (n*(n-1))/2)
		{
			System.out.println("no");
			return;
		}

		for(int i = 0; i < n-1; i++)
			addDist(i, i+1);


		for(int j = 0; j < m; j++)
		{
			int wire = wires[j];
			if(wire < dists.peek().dist)
			{
				System.out.println("no");
				return;
			}
			else
			{
				Connection c = dists.poll();
				if(c.right < n-1)
					addDist(c.left, c.right + 1);
			}
		}
		
		System.out.println("yes");
	}


	public static void addDist(int left, int right)
	{
		assert(right > left);
		dists.add(new Connection(left, right, (xs[right] - xs[left])));
	}

}
