A triangular number is the number of dots in an equilateral triangle uniformly filled with dots. For example, three dots can be arranged in a triangle; thus three is a triangular number. The n-th triangular number is the number of dots in a triangle with n dots on a side. <image>. You can learn more about these numbers from Wikipedia (http://en.wikipedia.org/wiki/Triangular_number).

Your task is to find out if a given integer is a triangular number.

Input

The first line contains the single number n (1 ≤ n ≤ 500) — the given integer.

Output

If the given integer is a triangular number output YES, otherwise output NO.

Examples

Input

1


Output

YES


Input

2


Output

NO


Input

3


Output

YES
import java.io.*;
import java.util.*;
import java.math.*;


public class Main implements Runnable {

    
    private void solve() throws IOException {
        int n  = nextInt();
        boolean ok = false;
        for (int i = 1; i <= n; ++i) {
            if (i * (i + 1) / 2 == n) {
                ok = true;
            } 
        }
        if (ok) {
            out.println("YES");
        } else {
            out.println("NO");
        }
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        new Thread(new Main()).start();

    }

    private BufferedReader br;
    private StringTokenizer st;
    private PrintWriter out;

    @Override
    public void run() {
        try {
            Locale.setDefault(Locale.US);
            br = new BufferedReader(new InputStreamReader(System.in));
            st = new StringTokenizer("");
            out = new PrintWriter(System.out);
            solve();
            out.close();            
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
        
    }

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

    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
    double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }
    long nextLong() throws IOException {
        return Long.parseLong(next());
    }
    
}
