#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXV = 1000000;
int n, m;
vector<vector<int>> a;
vector<vector<int>> comp;
vector<vector<ll>> ans;
vector<vector<pair<int,int>>> components;
vector<int> freq(MAXV + 1, 0);
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
void dfs(int x,int y,int id)
{
comp[x][y]=id;
components[id].push_back({x,y});
for(int k=0;k<4;k++)
{
int nx=x+dx[k];
int ny=y+dy[k];
if(nx<0||ny<0||nx>=n||ny>=m) continue;
if(comp[nx][ny]!=-1) continue;
if(a[nx][ny]==-1) continue; // blocked cell
dfs(nx,ny,id);
}
}
int main()
{
cin>>n>>m;
a.assign(n, vector<int>(m));
comp.assign(n, vector<int>(m,-1));
ans.assign(n, vector<ll>(m,0));
ll block = 0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
if(a[i][j]>=0)
freq[a[i][j]]++;
else block++;
}
}
// Find connected components
int id=0;
components.resize(n*m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]>=0 && comp[i][j]==-1)
{
dfs(i,j,id);
id++;
}
}
}
components.resize(id);
ll tot = 0;
// Process every component
for(auto &cells: components)
{
// Remove current component from frequency table
for(auto [x,y]:cells)
{
freq[a[x][y]]--;
}
// Compute answers
for(auto [x,y]:cells)
{
int val=a[x][y];
ll sum=0;
for(int multiple=val;multiple<=MAXV;multiple+=val)
{
sum += 1LL * multiple * freq[multiple];
}
tot+=sum;
}
// Restore frequencies
for(auto [x,y]:cells)
{
freq[a[x][y]]++;
}
}
cout<<tot-block;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmNvbnN0IGludCBNQVhWID0gMTAwMDAwMDsKCmludCBuLCBtOwp2ZWN0b3I8dmVjdG9yPGludD4+IGE7CnZlY3Rvcjx2ZWN0b3I8aW50Pj4gY29tcDsKdmVjdG9yPHZlY3RvcjxsbD4+IGFuczsKCnZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsaW50Pj4+IGNvbXBvbmVudHM7CnZlY3RvcjxpbnQ+IGZyZXEoTUFYViArIDEsIDApOwoKaW50IGR4WzRdID0gey0xLDEsMCwwfTsKaW50IGR5WzRdID0gezAsMCwtMSwxfTsKCnZvaWQgZGZzKGludCB4LGludCB5LGludCBpZCkKewogICAgY29tcFt4XVt5XT1pZDsKICAgIGNvbXBvbmVudHNbaWRdLnB1c2hfYmFjayh7eCx5fSk7CgogICAgZm9yKGludCBrPTA7azw0O2srKykKICAgIHsKICAgICAgICBpbnQgbng9eCtkeFtrXTsKICAgICAgICBpbnQgbnk9eStkeVtrXTsKCiAgICAgICAgaWYobng8MHx8bnk8MHx8bng+PW58fG55Pj1tKSBjb250aW51ZTsKICAgICAgICBpZihjb21wW254XVtueV0hPS0xKSBjb250aW51ZTsKICAgICAgICBpZihhW254XVtueV09PS0xKSBjb250aW51ZTsgICAgICAgICAgLy8gYmxvY2tlZCBjZWxsCgogICAgICAgIGRmcyhueCxueSxpZCk7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgY2luPj5uPj5tOwoKICAgIGEuYXNzaWduKG4sIHZlY3RvcjxpbnQ+KG0pKTsKICAgIGNvbXAuYXNzaWduKG4sIHZlY3RvcjxpbnQ+KG0sLTEpKTsKICAgIGFucy5hc3NpZ24obiwgdmVjdG9yPGxsPihtLDApKTsKbGwgYmxvY2sgPSAwOwogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MDtqPG07aisrKQogICAgICAgIHsKICAgICAgICAgICAgY2luPj5hW2ldW2pdOwoKICAgICAgICAgICAgaWYoYVtpXVtqXT49MCkKICAgICAgICAgICAgICAgIGZyZXFbYVtpXVtqXV0rKzsKICAgICAgICAgICAgZWxzZSBibG9jaysrOyAgICAKICAgICAgICB9CiAgICB9CgogICAgLy8gRmluZCBjb25uZWN0ZWQgY29tcG9uZW50cwogICAgaW50IGlkPTA7CiAgICBjb21wb25lbnRzLnJlc2l6ZShuKm0pOwoKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTA7ajxtO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFbaV1bal0+PTAgJiYgY29tcFtpXVtqXT09LTEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRmcyhpLGosaWQpOwogICAgICAgICAgICAgICAgaWQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb21wb25lbnRzLnJlc2l6ZShpZCk7CiAgIGxsIHRvdCA9IDA7CiAgICAvLyBQcm9jZXNzIGV2ZXJ5IGNvbXBvbmVudAogICAgZm9yKGF1dG8gJmNlbGxzOiBjb21wb25lbnRzKQogICAgewogICAgICAgIC8vIFJlbW92ZSBjdXJyZW50IGNvbXBvbmVudCBmcm9tIGZyZXF1ZW5jeSB0YWJsZQogICAgICAgIGZvcihhdXRvIFt4LHldOmNlbGxzKQogICAgICAgIHsKICAgICAgICAgICAgZnJlcVthW3hdW3ldXS0tOwogICAgICAgIH0KICAgICAgCiAgICAgICAgLy8gQ29tcHV0ZSBhbnN3ZXJzCiAgICAgICAgZm9yKGF1dG8gW3gseV06Y2VsbHMpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdmFsPWFbeF1beV07CiAgICAgICAgICAgIGxsIHN1bT0wOwoKICAgICAgICAgICAgZm9yKGludCBtdWx0aXBsZT12YWw7bXVsdGlwbGU8PU1BWFY7bXVsdGlwbGUrPXZhbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3VtICs9IDFMTCAqIG11bHRpcGxlICogZnJlcVttdWx0aXBsZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgdG90Kz1zdW07CiAgICAgICAgfQoKICAgICAgICAvLyBSZXN0b3JlIGZyZXF1ZW5jaWVzCiAgICAgICAgZm9yKGF1dG8gW3gseV06Y2VsbHMpCiAgICAgICAgewogICAgICAgICAgICBmcmVxW2FbeF1beV1dKys7CiAgICAgICAgfQogICAgfQoKICAgY291dDw8dG90LWJsb2NrOwogICAgcmV0dXJuIDA7Cn0=