#ABC 118 C - Monsters Battle Royale 21:58

def func(A):
    #(1)Aの最小値mを見つける
    #(2)Aの要素をmで割った余りで配列A'を作る（０は無視）
    #A'の要素が０個の場合、mが答え
    A = sorted(A)
    m = min(A)
    B = [A[0]]
    
    for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
    if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
    
n = int(input())
A = list(map(int, input().split()))
func(A) def func(A):
    #(1)Aの最小値mを見つける
    #(2)Aの要素をmで割った余りで配列A'を作る（０は無視）
    #A'の要素が０個の場合、mが答え
    A = sorted(A)
    m = min(A)
    B = [A[0]]
    
    for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
    if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
     func A = sorted(A) A sorted(A) sorted A m = min(A) m min(A) min A B = [A[0]] B [A[0]] A[0] A 0 for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
     i range(1,len(A)) range 1 len(A) len A if A[i]%m != 0:
            B.append(A[i]%m)
    
     A[i]%m != 0 A[i]%m A[i] A i m 0 B.append(A[i]%m) B.append B append A[i]%m A[i] A i m if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
     len(B) == 1 len(B) len B 1 print(m) print m return len(B) len(B) len B func(B) func B A A n = int(input()) n int(input()) int input() input A = list(map(int, input().split())) A list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split func(A) func A n = int(input()) int(input()) n A = list(map(int, input().split())) list(map(int, input().split())) A def func(A):
    #(1)Aの最小値mを見つける
    #(2)Aの要素をmで割った余りで配列A'を作る（０は無視）
    #A'の要素が０個の場合、mが答え
    A = sorted(A)
    m = min(A)
    B = [A[0]]
    
    for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
    if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
     def func(A):
    #(1)Aの最小値mを見つける
    #(2)Aの要素をmで割った余りで配列A'を作る（０は無視）
    #A'の要素が０個の場合、mが答え
    A = sorted(A)
    m = min(A)
    B = [A[0]]
    
    for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
    if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
     func
#ABC 118 C - Monsters Battle Royale 21:58

def func(A):
    #(1)Aの最小値mを見つける
    #(2)Aの要素をmで割った余りで配列A'を作る（０は無視）
    #A'の要素が０個の場合、mが答え
    A = sorted(A)
    m = min(A)
    B = [A[0]]
    
    for i in range(1,len(A)):
        if A[i]%m != 0:
            B.append(A[i]%m)
    
    if len(B) == 1:
        print(m)
        return len(B)
    else:
        func(B)
    
n = int(input())
A = list(map(int, input().split()))
func(A)