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

public class Main {
    static OutputWriter out;

    public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    }

    static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    }

    static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    }
}

class Graph {


    int n;
    ArrayList<Integer>[] adjList;

    public Graph(int n) {
        this.n = n;
        adjList = new ArrayList[n];
        for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>();
    }

}

class pair implements Comparable {

    int key;
    int value;

    public pair(Object key, Object value) {

        this.key = (int) key;
        this.value = (int) value;

    }

    @Override
    public int compareTo(Object o) {
        pair temp = (pair) o;
        return key - temp.key;
    }
}

class MyScanner {

    StringTokenizer st;
    BufferedReader br;

    public MyScanner(InputStream s) {
        br = new BufferedReader(new InputStreamReader(s));
    }

    public MyScanner(FileReader f) {
        br = new BufferedReader(f);
    }

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

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

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

    public String nextLine() throws IOException {
        return br.readLine();
    }

    public double nextDouble() throws IOException {
        String x = next();
        StringBuilder sb = new StringBuilder("0");
        double res = 0, f = 1;
        boolean dec = false, neg = false;
        int start = 0;
        if (x.charAt(0) == '-') {
            neg = true;
            start++;
        }
        for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            }
        res += Long.parseLong(sb.toString()) / f;
        return res * (neg ? -1 : 1);
    }

    public boolean ready() throws IOException {
        return br.ready();
    }

    public boolean nextEmpty() throws IOException {
        String s = nextLine();
        st = new StringTokenizer(s);
        return s.isEmpty();
    }
}

class OutputWriter {
    private final PrintWriter writer;

    public OutputWriter(OutputStream outputStream) {
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
    }

    public OutputWriter(Writer writer) {
        this.writer = new PrintWriter(writer);
    }

    public void print(Object... objects) {
        for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        }
    }


    public void printLine(Object... objects) {
        print(objects);
        writer.println();
    }

    public void close() {
        writer.close();
    }

    public void flush() {
        writer.flush();
    }

} import java.io.*; io.* java import java.util.*; util.* java public class Main {
    static OutputWriter out;

    public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    }

    static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    }

    static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    }
} Main static OutputWriter out; out public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    } main {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    } MyScanner in = new MyScanner(System.in); in new MyScanner(System.in) out = new OutputWriter(System.out) out new OutputWriter(System.out) long k = in.nextLong(); k in.nextLong() in.nextLong in int n = in.nextInt(); n in.nextInt() in.nextInt in long sum =0; sum 0 for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            sum+=in.nextLong();
        } {
            sum+=in.nextLong();
        } sum+=in.nextLong() sum in.nextLong() in.nextLong in out.printLine(sum>=k?"Yes":"No") out.printLine out sum>=k?"Yes":"No" sum>=k sum k "Yes" "No" out.flush() out.flush out String[] args args static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    } MergeSort {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    } if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        } p < r p r {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        } int q = (r + p) / 2; q (r + p) / 2 (r + p) r p 2 MergeSort(a, b, c, p, q) MergeSort a b c p q MergeSort(a, b, c, q + 1, r) MergeSort a b c q + 1 q 1 r Merge(a, b, c, p, q, r) Merge a b c p q r long[] a a long[] b b long[] c c int p p int r r static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    } Merge {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    } int n1 = q - p + 1; n1 q - p + 1 q - p q p 1 int n2 = r - q; n2 r - q r q long[] R = new long[n1 + 1]; R new long[n1 + 1] n1 + 1 n1 1 long[] L = new long[n2 + 1]; L new long[n2 + 1] n2 + 1 n2 1 long[] R1 = new long[n1]; R1 new long[n1] n1 long[] L1 = new long[n2]; L1 new long[n2] n2 long[] R2 = new long[n1]; R2 new long[n1] n1 long[] L2 = new long[n2]; L2 new long[n2] n2 for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        } int i = 0; int i = 0; i 0 i < n1 i n1 i++ i++ i {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        } {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        } R[i] = a[p + i] R[i] R i a[p + i] a p + i p i R1[i] = b[p + i] R1[i] R1 i b[p + i] b p + i p i R2[i] = c[p + i] R2[i] R2 i c[p + i] c p + i p i R[n1] = Long.MAX_VALUE R[n1] R n1 Long.MAX_VALUE Long Long.MAX_VALUE for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        } int i = 0; int i = 0; i 0 i < n2 i n2 i++ i++ i {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        } {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        } L[i] = a[q + i + 1] L[i] L i a[q + i + 1] a q + i + 1 q + i + 1 q i 1 L1[i] = b[q + i + 1] L1[i] L1 i b[q + i + 1] b q + i + 1 q + i + 1 q i 1 L2[i] = c[q + i + 1] L2[i] L2 i c[q + i + 1] c q + i + 1 q + i + 1 q i 1 L[n2] = Long.MAX_VALUE L[n2] L n2 Long.MAX_VALUE Long Long.MAX_VALUE int n = a.length; n a.length a a.length int j = 0; j 0 int k = 0; k 0 for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        } int i = p; int i = p; i p i <= r i r i++ i++ i {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        } {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        } if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            } L[j] <= R[k] L[j] L j R[k] R k {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } a[i] = L[j] a[i] a i L[j] L j b[i] = L1[j] b[i] b i L1[j] L1 j c[i] = L2[j] c[i] c i L2[j] L2 j j++ j {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            } a[i] = R[k] a[i] a i R[k] R k b[i] = R1[k] b[i] b i R1[k] R1 k c[i] = R2[k] c[i] c i R2[k] R2 k k++ k long[] a a long[] b b long[] c c int p p int q q int r r class Graph {


    int n;
    ArrayList<Integer>[] adjList;

    public Graph(int n) {
        this.n = n;
        adjList = new ArrayList[n];
        for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>();
    }

} Graph int n; n ArrayList<Integer>[] adjList; adjList public Graph(int n) {
        this.n = n;
        adjList = new ArrayList[n];
        for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>();
    } Graph {
        this.n = n;
        adjList = new ArrayList[n];
        for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>();
    } this.n = n this.n this this.n n adjList = new ArrayList[n] adjList new ArrayList[n] n for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>(); int i = 0; int i = 0; i 0 i < n i n i++ i++ i adjList[i] = new ArrayList<>(); adjList[i] = new ArrayList<>() adjList[i] adjList i new ArrayList<>() int n n class pair implements Comparable {

    int key;
    int value;

    public pair(Object key, Object value) {

        this.key = (int) key;
        this.value = (int) value;

    }

    @Override
    public int compareTo(Object o) {
        pair temp = (pair) o;
        return key - temp.key;
    }
} pair int key; key int value; value public pair(Object key, Object value) {

        this.key = (int) key;
        this.value = (int) value;

    } pair {

        this.key = (int) key;
        this.value = (int) value;

    } this.key = (int) key this.key this this.key (int) key this.value = (int) value this.value this this.value (int) value Object key key Object value value @Override
    public int compareTo(Object o) {
        pair temp = (pair) o;
        return key - temp.key;
    } compareTo {
        pair temp = (pair) o;
        return key - temp.key;
    } pair temp = (pair) o; temp (pair) o return key - temp.key; key - temp.key key temp.key temp temp.key Object o o Comparable class MyScanner {

    StringTokenizer st;
    BufferedReader br;

    public MyScanner(InputStream s) {
        br = new BufferedReader(new InputStreamReader(s));
    }

    public MyScanner(FileReader f) {
        br = new BufferedReader(f);
    }

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

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

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

    public String nextLine() throws IOException {
        return br.readLine();
    }

    public double nextDouble() throws IOException {
        String x = next();
        StringBuilder sb = new StringBuilder("0");
        double res = 0, f = 1;
        boolean dec = false, neg = false;
        int start = 0;
        if (x.charAt(0) == '-') {
            neg = true;
            start++;
        }
        for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            }
        res += Long.parseLong(sb.toString()) / f;
        return res * (neg ? -1 : 1);
    }

    public boolean ready() throws IOException {
        return br.ready();
    }

    public boolean nextEmpty() throws IOException {
        String s = nextLine();
        st = new StringTokenizer(s);
        return s.isEmpty();
    }
} MyScanner StringTokenizer st; st BufferedReader br; br public MyScanner(InputStream s) {
        br = new BufferedReader(new InputStreamReader(s));
    } MyScanner {
        br = new BufferedReader(new InputStreamReader(s));
    } br = new BufferedReader(new InputStreamReader(s)) br new BufferedReader(new InputStreamReader(s)) InputStream s s public MyScanner(FileReader f) {
        br = new BufferedReader(f);
    } MyScanner {
        br = new BufferedReader(f);
    } br = new BufferedReader(f) br new BufferedReader(f) FileReader f f public String next() throws IOException {
        while (st == null || !st.hasMoreTokens())
            st = new StringTokenizer(br.readLine());
        return st.nextToken();
    } next {
        while (st == null || !st.hasMoreTokens())
            st = new StringTokenizer(br.readLine());
        return st.nextToken();
    } while (st == null || !st.hasMoreTokens())
            st = new StringTokenizer(br.readLine()); st == null || !st.hasMoreTokens() st == null st null !st.hasMoreTokens() st.hasMoreTokens() st.hasMoreTokens st st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st public int nextInt() throws IOException {
        return Integer.parseInt(next());
    } nextInt {
        return Integer.parseInt(next());
    } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next public long nextLong() throws IOException {
        return Long.parseLong(next());
    } nextLong {
        return Long.parseLong(next());
    } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next public String nextLine() throws IOException {
        return br.readLine();
    } nextLine {
        return br.readLine();
    } return br.readLine(); br.readLine() br.readLine br public double nextDouble() throws IOException {
        String x = next();
        StringBuilder sb = new StringBuilder("0");
        double res = 0, f = 1;
        boolean dec = false, neg = false;
        int start = 0;
        if (x.charAt(0) == '-') {
            neg = true;
            start++;
        }
        for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            }
        res += Long.parseLong(sb.toString()) / f;
        return res * (neg ? -1 : 1);
    } nextDouble {
        String x = next();
        StringBuilder sb = new StringBuilder("0");
        double res = 0, f = 1;
        boolean dec = false, neg = false;
        int start = 0;
        if (x.charAt(0) == '-') {
            neg = true;
            start++;
        }
        for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            }
        res += Long.parseLong(sb.toString()) / f;
        return res * (neg ? -1 : 1);
    } String x = next(); x next() next StringBuilder sb = new StringBuilder("0"); sb new StringBuilder("0") double res = 0 res 0 f = 1; f 1 boolean dec = false dec false neg = false; neg false int start = 0; start 0 if (x.charAt(0) == '-') {
            neg = true;
            start++;
        } x.charAt(0) == '-' x.charAt(0) x.charAt x 0 '-' {
            neg = true;
            start++;
        } neg = true neg true start++ start for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            } int i = start; int i = start; i start i < x.length() i x.length() x.length x i++ i++ i if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            } if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            } x.charAt(i) == '.' x.charAt(i) x.charAt x i '.' {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } res = Long.parseLong(sb.toString()) res Long.parseLong(sb.toString()) Long.parseLong Long sb.toString() sb.toString sb sb = new StringBuilder("0") sb new StringBuilder("0") dec = true dec true {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            } sb.append(x.charAt(i)) sb.append sb x.charAt(i) x.charAt x i if (dec)
                    f *= 10; dec f *= 10 f 10 res += Long.parseLong(sb.toString()) / f res Long.parseLong(sb.toString()) / f Long.parseLong(sb.toString()) Long.parseLong Long sb.toString() sb.toString sb f return res * (neg ? -1 : 1); res * (neg ? -1 : 1) res (neg ? -1 : 1) neg -1 1 1 public boolean ready() throws IOException {
        return br.ready();
    } ready {
        return br.ready();
    } return br.ready(); br.ready() br.ready br public boolean nextEmpty() throws IOException {
        String s = nextLine();
        st = new StringTokenizer(s);
        return s.isEmpty();
    } nextEmpty {
        String s = nextLine();
        st = new StringTokenizer(s);
        return s.isEmpty();
    } String s = nextLine(); s nextLine() nextLine st = new StringTokenizer(s) st new StringTokenizer(s) return s.isEmpty(); s.isEmpty() s.isEmpty s class OutputWriter {
    private final PrintWriter writer;

    public OutputWriter(OutputStream outputStream) {
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
    }

    public OutputWriter(Writer writer) {
        this.writer = new PrintWriter(writer);
    }

    public void print(Object... objects) {
        for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        }
    }


    public void printLine(Object... objects) {
        print(objects);
        writer.println();
    }

    public void close() {
        writer.close();
    }

    public void flush() {
        writer.flush();
    }

} OutputWriter private final PrintWriter writer; writer public OutputWriter(OutputStream outputStream) {
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
    } OutputWriter {
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
    } writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))) writer new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))) OutputStream outputStream outputStream public OutputWriter(Writer writer) {
        this.writer = new PrintWriter(writer);
    } OutputWriter {
        this.writer = new PrintWriter(writer);
    } this.writer = new PrintWriter(writer) this.writer this this.writer new PrintWriter(writer) Writer writer writer public void print(Object... objects) {
        for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        }
    } print {
        for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        }
    } for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        } int i = 0; int i = 0; i 0 i < objects.length i objects.length objects objects.length i++ i++ i {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        } {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        } if (i != 0)
                writer.print(' '); i != 0 i 0 writer.print(' ') writer.print writer ' ' writer.print(objects[i]) writer.print writer objects[i] objects i Object... objects objects public void printLine(Object... objects) {
        print(objects);
        writer.println();
    } printLine {
        print(objects);
        writer.println();
    } print(objects) print objects writer.println() writer.println writer Object... objects objects public void close() {
        writer.close();
    } close {
        writer.close();
    } writer.close() writer.close writer public void flush() {
        writer.flush();
    } flush {
        writer.flush();
    } writer.flush() writer.flush writer public class Main {
    static OutputWriter out;

    public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    }

    static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    }

    static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    }
} public class Main {
    static OutputWriter out;

    public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    }

    static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    }

    static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    }
} Main
import java.io.*;
import java.util.*;

public class Main {
    static OutputWriter out;

    public static void main(String[] args) throws Exception {
        MyScanner in = new MyScanner(System.in);
        out = new OutputWriter(System.out);
        long k = in.nextLong();
        int n = in.nextInt();
        long sum =0;
        for (int i = 0; i < n; i++) {
            sum+=in.nextLong();
        }
        out.printLine(sum>=k?"Yes":"No");
        out.flush();
    }

    static void MergeSort(long[] a, long[] b, long[] c, int p, int r) {
        if (p < r) {
            int q = (r + p) / 2;
            MergeSort(a, b, c, p, q);
            MergeSort(a, b, c, q + 1, r);
            Merge(a, b, c, p, q, r);
        }
    }

    static void Merge(long[] a, long[] b, long[] c, int p, int q, int r) {
        int n1 = q - p + 1;
        int n2 = r - q;
        long[] R = new long[n1 + 1];
        long[] L = new long[n2 + 1];
        long[] R1 = new long[n1];
        long[] L1 = new long[n2];
        long[] R2 = new long[n1];
        long[] L2 = new long[n2];
        for (int i = 0; i < n1; i++) {
            R[i] = a[p + i];
            R1[i] = b[p + i];
            R2[i] = c[p + i];
        }
        R[n1] = Long.MAX_VALUE;
        for (int i = 0; i < n2; i++) {
            L[i] = a[q + i + 1];
            L1[i] = b[q + i + 1];
            L2[i] = c[q + i + 1];
        }
        L[n2] = Long.MAX_VALUE;
        int n = a.length;
        int j = 0;
        int k = 0;
        for (int i = p; i <= r; i++) {
            if (L[j] <= R[k]) {
                a[i] = L[j];
                b[i] = L1[j];
                c[i] = L2[j];
                j++;
            } else {
                a[i] = R[k];
                b[i] = R1[k];
                c[i] = R2[k];
                k++;
            }


        }
    }
}

class Graph {


    int n;
    ArrayList<Integer>[] adjList;

    public Graph(int n) {
        this.n = n;
        adjList = new ArrayList[n];
        for (int i = 0; i < n; i++)
            adjList[i] = new ArrayList<>();
    }

}

class pair implements Comparable {

    int key;
    int value;

    public pair(Object key, Object value) {

        this.key = (int) key;
        this.value = (int) value;

    }

    @Override
    public int compareTo(Object o) {
        pair temp = (pair) o;
        return key - temp.key;
    }
}

class MyScanner {

    StringTokenizer st;
    BufferedReader br;

    public MyScanner(InputStream s) {
        br = new BufferedReader(new InputStreamReader(s));
    }

    public MyScanner(FileReader f) {
        br = new BufferedReader(f);
    }

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

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

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

    public String nextLine() throws IOException {
        return br.readLine();
    }

    public double nextDouble() throws IOException {
        String x = next();
        StringBuilder sb = new StringBuilder("0");
        double res = 0, f = 1;
        boolean dec = false, neg = false;
        int start = 0;
        if (x.charAt(0) == '-') {
            neg = true;
            start++;
        }
        for (int i = start; i < x.length(); i++)
            if (x.charAt(i) == '.') {
                res = Long.parseLong(sb.toString());
                sb = new StringBuilder("0");
                dec = true;
            } else {
                sb.append(x.charAt(i));
                if (dec)
                    f *= 10;
            }
        res += Long.parseLong(sb.toString()) / f;
        return res * (neg ? -1 : 1);
    }

    public boolean ready() throws IOException {
        return br.ready();
    }

    public boolean nextEmpty() throws IOException {
        String s = nextLine();
        st = new StringTokenizer(s);
        return s.isEmpty();
    }
}

class OutputWriter {
    private final PrintWriter writer;

    public OutputWriter(OutputStream outputStream) {
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
    }

    public OutputWriter(Writer writer) {
        this.writer = new PrintWriter(writer);
    }

    public void print(Object... objects) {
        for (int i = 0; i < objects.length; i++) {
            if (i != 0)
                writer.print(' ');
            writer.print(objects[i]);
        }
    }


    public void printLine(Object... objects) {
        print(objects);
        writer.println();
    }

    public void close() {
        writer.close();
    }

    public void flush() {
        writer.flush();
    }

}