import java.util.*;
import java.util.Comparator;
 
public class Main { 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    }
}
class Node {
    int data;
    Node left;
    Node right;
}

class BinarySearchTree {
    private Node root;
  public void add(int data) {
    // ツリーがない場合の特別処理
    if (root == null) {
        root = new Node();
        root.data = data;
        return;
    }

    // 現在ノードをルートノードとする
    Node current = root;
    while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    }
}
  public boolean contains(int data) {
    // 現在ノードをルートノードとする
    Node current = root;
    // 次のノードが存在しない場合は探索終了
    while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    }
    return false;
  }
} import java.util.*; util.* java import java.util.Comparator; Comparator java.util public class Main { 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    }
} Main public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    } main {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int n=sc.nextInt(); n sc.nextInt() sc.nextInt sc String o="YES"; o "YES" int[] a=new int[n]; a new int[n] n BinarySearchTree t=new BinarySearchTree(); t new BinarySearchTree() for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        } {
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        } a[i]=sc.nextInt() a[i] a i sc.nextInt() sc.nextInt sc if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            } t.contains(a[i]) t.contains t a[i] a i {
            	o="NO";
                System.out.println(o);
                return;
            } o="NO" o "NO" System.out.println(o) System.out.println System.out System System.out o return; {
            	t.add(a[i]);
            } t.add(a[i]) t.add t a[i] a i System.out.println(o) System.out.println System.out System System.out o String[] args args class Node {
    int data;
    Node left;
    Node right;
} Node int data; data Node left; left Node right; right class BinarySearchTree {
    private Node root;
  public void add(int data) {
    // ツリーがない場合の特別処理
    if (root == null) {
        root = new Node();
        root.data = data;
        return;
    }

    // 現在ノードをルートノードとする
    Node current = root;
    while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    }
}
  public boolean contains(int data) {
    // 現在ノードをルートノードとする
    Node current = root;
    // 次のノードが存在しない場合は探索終了
    while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    }
    return false;
  }
} BinarySearchTree private Node root; root public void add(int data) {
    // ツリーがない場合の特別処理
    if (root == null) {
        root = new Node();
        root.data = data;
        return;
    }

    // 現在ノードをルートノードとする
    Node current = root;
    while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    }
} add {
    // ツリーがない場合の特別処理
    if (root == null) {
        root = new Node();
        root.data = data;
        return;
    }

    // 現在ノードをルートノードとする
    Node current = root;
    while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    }
} if (root == null) {
        root = new Node();
        root.data = data;
        return;
    } root == null root null {
        root = new Node();
        root.data = data;
        return;
    } root = new Node() root new Node() root.data = data root.data root root.data data return; Node current = root; current root while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    } true {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    } if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        } data < current.data data current.data current current.data {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        } if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            } current.left == null current.left current current.left null {
                current.left = new Node();
                current.left.data = data;
                return;
            } current.left = new Node() current.left current current.left new Node() current.left.data = data current.left.data current.left current current.left current.left.data data return; current = current.left current current.left current current.left if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        } current.data <= data current.data current current.data data {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        } if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            } current.right == null current.right current current.right null {
                current.right = new Node();
                current.right.data = data;
                return;
            } current.right = new Node() current.right current current.right new Node() current.right.data = data current.right.data current.right current current.right current.right.data data return; current = current.right current current.right current current.right int data data public boolean contains(int data) {
    // 現在ノードをルートノードとする
    Node current = root;
    // 次のノードが存在しない場合は探索終了
    while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    }
    return false;
  } contains {
    // 現在ノードをルートノードとする
    Node current = root;
    // 次のノードが存在しない場合は探索終了
    while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    }
    return false;
  } Node current = root; current root while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    } current != null current null {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    } if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        } current.data == data current.data current current.data data {
            return true;
        } return true; true if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        } data < current.data data current.data current current.data {
            current = current.left;
        } current = current.left current current.left current current.left if (current.data < data) {
            current = current.right;
        } current.data < data current.data current current.data data {
            current = current.right;
        } current = current.right current current.right current current.right return false; false int data data public class Main { 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    }
} public class Main { 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    }
} Main
import java.util.*;
import java.util.Comparator;
 
public class Main { 
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);       
        int n=sc.nextInt();
        String o="YES";
        int[] a=new int[n];
      BinarySearchTree t=new BinarySearchTree();
        for(int i=0;i<n;i++){
        	a[i]=sc.nextInt();
            if(t.contains(a[i])){
            	o="NO";
                System.out.println(o);
                return;
            }else{
            	t.add(a[i]);
            }
            /*for(int j=0;j<i;j++){
            	if(a[j]==a[i]){
                	o="NO";
                    System.out.println(o);
                    return;
                }
            }*/
        }
      System.out.println(o);
    }
}
class Node {
    int data;
    Node left;
    Node right;
}

class BinarySearchTree {
    private Node root;
  public void add(int data) {
    // ツリーがない場合の特別処理
    if (root == null) {
        root = new Node();
        root.data = data;
        return;
    }

    // 現在ノードをルートノードとする
    Node current = root;
    while (true) {
        // 「追加する値 ＜ 現在ノードの値」なら左の子を対象とする
        if (data < current.data) {
            // 次のノードが存在しない場合はその位置にデータを追加する
            if (current.left == null) {
                current.left = new Node();
                current.left.data = data;
                return;
            }
            // 存在する場合は次のノードを現在ノードとして繰り返す
            current = current.left;
        }
        // 「現在ノードの値 ≦ 追加する値」なら右の子を対象とする
        else if (current.data <= data) {
            if (current.right == null) {
                current.right = new Node();
                current.right.data = data;
                return;
            }
            current = current.right;
        }
    }
}
  public boolean contains(int data) {
    // 現在ノードをルートノードとする
    Node current = root;
    // 次のノードが存在しない場合は探索終了
    while (current != null) {
        // 等しければ探索終了
        if (current.data == data) {
            return true;
        }
        // 「探索値 ＜ 現在ノードの値」なら左の子に進む
         else if (data < current.data) {
            current = current.left;
        }
        // 「現在ノードの値 ＜ 探索値」なら右の子に進む
         else if (current.data < data) {
            current = current.right;
        }
    }
    return false;
  }
}