#!/usr/bin/ruby def dfs(a,&block) return to_enum(:dfs,a) if !block_given? yield a[0] if a.size<2 (a.size-1).times{|i| dfs(a[0..i]){|l| (puts :YES;exit) if l==0 next if l<0 dfs(a[i+1..-1]){|r| (puts :YES;exit) if r==0 next if r<0 yield l+r yield l-r yield l*r yield l.is_a?(Rational) || r.is_a?(Rational) ? l/r : Rational(l,r) } } } end n,*a=`dd`.split.map(&:to_i) a.permutation{|b| dfs(b).each{|e| (puts :YES;exit) if e==0 } } puts :NO