다항식 인수분해

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

한 변수에 대한 다항식은 형식적인 합 anxn+an1xn1++a1x+a0a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0 으로 나타낼 수 있으며, 여기서 xx 는 형식 변수이고 aia_i 는 계수이다. ai0a_i \neq 0 을 만족하는 가장 큰 ii 를 다항식의 차수라고 한다. 모든 ii 에 대해 ai=0a_i = 0 이면 차수는 -\infty 로 정의한다. 차수가 00 이거나 -\infty 인 다항식을 자명한(trivial) 다항식이라 하고, 그 외의 다항식을 자명하지 않은(non-trivial) 다항식이라 한다.

실수 계수 다항식을 두 개 이상의 자명하지 않은 실수 계수 다항식의 곱으로 나타낼 수 없으면 그 다항식을 기약(irreducible) 이라 하고, 그렇지 않으면 가약(reducible) 이라고 한다. 예를 들어 x22x+1=(x1)(x1)x^2 - 2x + 1 = (x - 1)(x - 1) 이므로 x22x+1x^2 - 2x + 1 은 가약이지만, x2+1x^2 + 1 은 기약이다. 모든 다항식은 하나 이상의 기약 다항식의 곱으로 나타낼 수 있다는 사실이 잘 알려져 있다.

정수 계수 다항식이 주어질 때, 이 다항식이 실수 범위에서 기약인지 판정하여라.

입력

첫째 줄에 다항식의 차수 nn 이 주어진다 (0n200 \le n \le 20).

둘째 줄에 n+1n + 1 개의 정수 an,an1,,a1,a0a_n, a_{n-1}, \ldots, a_1, a_0 이 주어진다. 이는 다항식의 계수이다 (1000ai1000-1000 \le a_i \le 1000, an0a_n \neq 0).

출력

주어진 다항식이 실수 범위에서 기약이면 YES 를, 그렇지 않으면 NO 를 출력한다.