According to rules of the Berland fashion, a jacket should be fastened by all the buttons except only one, but not necessarily it should be the last one. Also if the jacket has only one button, it should be fastened, so the jacket will not swinging open.

You are given a jacket with n buttons. Determine if it is fastened in a right way.

Input

The first line contains integer n (1 ≤ n ≤ 1000) — the number of buttons on the jacket.

The second line contains n integers ai (0 ≤ ai ≤ 1). The number ai = 0 if the i-th button is not fastened. Otherwise ai = 1.

Output

In the only line print the word "YES" if the jacket is fastened in a right way. Otherwise print the word "NO".

Examples

Input

3
1 0 1


Output

YES


Input

3
1 0 0


Output

NO
/**
 * Created by 1 on 16.07.15.
 */

import java.io.*;
import java.lang.reflect.Array;
import java.util.*;


public class Codeforces {
    private MyScanner in;
    private PrintWriter out;

    /*
    *  Solution here
    */
    private Codeforces solve() {
        int n = in.nextInt();
        int a = 0;
        for (int i = 0; i < n; i++) {
            int p = in.nextInt();
            if (p == 0) {
                a++;
            }
        }

        if (a == 0 && n == 1) {
            out.print("YES");
        } else if (a == 1 && n > 1) {
            out.print("YES");
        } else {
            out.print("NO");
        }

        return this;
    }

    private Codeforces init() {

        try {
            in = new MyScanner(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
        } catch (FileNotFoundException e) {
            throw new RuntimeException();
        }
        return this;
    }

    private Codeforces finish() {
        out.flush();
        return this;
    }

    public static void main(String[] args) {
        new Codeforces().init().solve().finish();
    }

    private static class MyScanner {
        private BufferedReader reader;
        private StringTokenizer tokenizer;
        private boolean hasNextTokenFlag = true;

        MyScanner(final Reader input) throws FileNotFoundException {
            reader = new BufferedReader(input);
            ensureTokenizer();
        }

        MyScanner(final String filename) throws FileNotFoundException {
            this(new FileReader(filename));
        }

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

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

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

        public String nextLine() {
            if (!hasNextToken()) {
                throw new NoSuchElementException();
            }
            return tokenizer.nextToken("");
        }

        public String next() {
            if (!hasNextToken()) {
                throw new NoSuchElementException();
            }
            return tokenizer.nextToken();
        }

        public boolean hasNextToken() {
            ensureTokenizer();
            return hasNextTokenFlag;
        }

        private void ensureTokenizer() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                String buffer = getBuffer();
                if (buffer == null) {
                    tokenizer = null;
                    hasNextTokenFlag = false;
                    return;
                }
                tokenizer = new StringTokenizer(buffer);
            }
        }

        private String getBuffer() {
            try {
                return reader.readLine();
            } catch (IOException e) {
                throw new RuntimeException();
            }
        }

    }
}