##### Short Problem Definition:

Sherlock is stuck while solving a problem: Given an array A={a1,a2,..aN}, he wants to know if there exists a subset, B={ai1,ai2,…aik} where 1≤i1<i2<…<ik≤N…

##### Link

##### Complexity:

time complexity is `O(N)`

space complexity is `O(1)`

##### Execution:

A subset has no common divisor if the GCD equals 1. There is an interesting fact that leads to my solution: If any subset has GCD 1, any bigger set containing this set will also have GCD 1. Therefore GCD(a,b,c,d) = GCD(GCD(GCD(a,b),c),d). This is easily generated by python *reduce.*

Beware: The problem statement allows n==1.

##### Solution:

```
#!/usr/bin/py
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
def multiple_gcd(numbers):
return reduce(lambda x,y: gcd(x,y), numbers)
if __name__ == '__main__':
t = input()
for _ in xrange(t):
n = input()
values = map(int, raw_input().split())
if len(values) < 2:
print "NO"
continue
if (multiple_gcd(values) == 1):
print "YES"
else:
print "NO"
```