#include #include #include #include using namespace std ; typedef long long LL ; #define rep( i , a , b ) for ( int i = ( a ) ; i < ( b ) ; ++ i ) #define clr( a , x ) memset ( a , x , sizeof a ) const int MAXN = 1005 ; const int mod = 1e8 + 7 ; int p[MAXN] ; vector < int > G[MAXN] ; int c[MAXN] ; int n ; void preprocess () { p[0] = 1 ; for ( int i = 1 ; i < MAXN ; ++ i ) p[i] = p[i - 1] * 2 % mod ; for ( int i = 1 ; i < MAXN ; ++ i ) { for ( int j = i ; j < MAXN ; j += i ) { G[j].push_back ( i ) ; } } } void solve () { int x ; clr ( c , 0 ) ; scanf ( "%d" , &n ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d" , &x ) ; for ( int j = 0 ; j < G[x].size () ; ++ j ) { c[G[x][j]] ++ ; } } for ( int i = 1 ; i <= 1000 ; ++ i ) { c[i] = ( p[c[i]] - 1 + mod ) % mod ; } for ( int i = 1000 ; i >= 1 ; -- i ) { for ( int j = i + i ; j <= 1000 ; j += i ) { c[i] = ( c[i] - c[j] + mod ) % mod ; } } LL ans = 0 ; for ( int i = 1 ; i <= 1000 ; ++ i ) { ans = ( ans + 1LL * c[i] * i ) % mod ; } printf ( "%I64d\n" , ans ) ; } int main () { int T ; preprocess () ; scanf ( "%d" , &T ) ; for ( int i = 1 ; i <= T ; ++ i ) solve () ; return 0 ; }