#include <bits/stdc++.h>
using namespace std;
int n, m;
char x[1001][1001];
int check(int i, int j) {
  if (x[i][j] == '.') {
    for (int a = -1; a <= 1; a++) {
      for (int k = -1; k <= 1; k++) {
        if (i + a >= 0 && i + a < n && j + k >= 0 && j + k < m &&
            x[i + a][j + k] == '*') {
          return 1;
        }
      }
    }
  } else {
    int cnt = 0;
    for (int a = -1; a <= 1; a++) {
      for (int k = -1; k <= 1; k++) {
        if (i + a >= 0 && i + a < n && j + k >= 0 && j + k < m &&
            x[i + a][j + k] == '*') {
          cnt++;
        }
      }
    }
    if (cnt != x[i][j] - '0') {
      return 1;
    }
  }
  return 0;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    scanf("%s", x[i]);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (x[i][j] != '*' && check(i, j)) {
        printf("NO\n");
        return 0;
      }
    }
  }
  printf("YES\n");
  return 0;
}
