#include <iostream>
#include <algorithm>
using namespace std;

int H, W;
int wall;
int M[102][102];
bool visited[102][102];

const int dx[2][6] = {{ 1,-1, 0, 0,-1,-1},{ 1,-1, 0, 0, 1, 1}};
const int dy[2][6] = {{ 0, 0, 1,-1,-1, 1},{ 0, 0, 1,-1,-1, 1}};

bool isInField(int x, int y) {
  return 0<=x&&x<=W+1 && 0<=y&&y<=H+1;
}

void dfs(int x, int y){

  if(visited[y][x]) return;
  visited[y][x] = true;

  for(int i=0; i<6; i++) {
    int nx = x+dx[y%2][i], ny = y+dy[y%2][i];
    if(isInField(nx, ny)) {
      if(M[ny][nx]) wall ++;
      else dfs(nx, ny);
    }
  }
}

int main(){

  fill(M[0], M[102], 0);
  fill(visited[0], visited[102], false);

  cin >> W >> H;

  for(int i=1; i<=H; i++) {
    for(int j=1; j<=W; j++) {
      cin >> M[i][j];
    }
  }
  
  wall = 0; dfs(0, 0);
  cout << wall << endl;
  
  return 0;
}