import java.io.*; import java.util.*; import java.util.stream.*; class Process { private int[] x; Process(int[] x) { this.x = x; } // 重複した要素がないか private boolean isUnique(int[] x) { return (x.length == IntStream.of(x).distinct().toArray().length); } // 等間隔か private boolean isEqualIntervals(int[] x) { int[] sortedX = IntStream.of(x).sorted().toArray(); int interval = sortedX[1] - sortedX[0]; for(int i = 1; i < (x.length - 1); i++) { if((sortedX[i + 1] - sortedX[i]) != interval) { return false; } } return true; } String getResult() { return ((isUnique(x) && isEqualIntervals(x)) ? "YES" : "NO"); } } public class Main { public static void main(String[] args) throws IOException { var bufferedReader = new BufferedReader(new InputStreamReader(System.in)); var printWriter = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); // 入力 int N = Integer.parseInt(bufferedReader.readLine().trim()); int[] x = Stream.of(bufferedReader.readLine().trim().split("[ ]+")).mapToInt(Integer::parseInt).toArray(); // 処理および出力 printWriter.println((new Process(x)).getResult()); bufferedReader.close(); printWriter.close(); } }