#include <iostream>
#include <vector>
#include <cstdio>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
#include <climits>
#include <iomanip>
#include <cstdio>
#define ll   long long int
#define MOD 1000000007
#define inf  20000000000000
#define eps  0.0000000000001
using namespace std ; 
vector<int> divi[1000001] ;  

ll Mul[1000001] ; 
ll ans[1000001] ;  
int arr[100001]  ; 
int main()
{
   ios::sync_with_stdio(false);cin.tie(0) ;cout.tie(0) ;
   int n  ;  
   cin>>n ;     


   
   for(int i  = 2 ;  i <=  1000000 ; ++i)
   {
      ll j  =  i ;   
      while(j <= 1000000)
      {
         divi[j].push_back(i) ;  
         j +=  i  ;  
      }
   }

    for(ll  i =  0 ;  i < n  ; ++i)
    {
        cin>>arr[i] ;   

        for(ll u : divi[arr[i]])
        {
           Mul[u]++  ; 
        }
        Mul[1]++;

    }
     ll zz = 0  ; 
    for(ll i  = 1000000 ;  i >= 2 ;  --i)
    {
      if(Mul[i] < 3)
        continue ;  

      ll j   =  i * 2    ; 
      ll rem = 0  ;  
      while(j <= 1000000)
      {
         rem += ans[j] ;  
         j+= i ;  
      }
      ans[i]  =  (Mul[i]  * (Mul[i]  - 1) * (Mul[i]  -2))/6 - rem  ;
      zz += ans[i] ;   
      
    }
    cout<<(Mul[1]  * (Mul[1]  - 1) * (Mul[1]  -2))/6 - zz   ;  


 return  0  ;
} 

