#include <bits/stdc++.h>
using namespace std;
bool sortcol(const vector<int> &v1, const vector<int> &v2) {
  return v1[1] < v2[1];
}
bool chk(vector<string> &, vector<vector<int>> &, int, int);
int main() {
  int n, m, i, j, pflg = 0, oflg = 0;
  cin >> n >> m;
  vector<string> s(n);
  vector<vector<int>> dp(n, vector<int>(m, 0));
  for (i = 0; i < n; ++i) cin >> s[i];
  for (i = 0; i < n; ++i) {
    for (j = 0; j < m; ++j) {
      if (s[i][j] == '*') {
        if (pflg == 0) {
          pflg = chk(s, dp, i, j);
          if (pflg == 0) oflg = 1;
        } else if (dp[i][j] == 0)
          oflg = 1;
        if (oflg == 1) break;
      }
    }
    if (oflg == 1) break;
  }
  if (pflg == 1 && oflg == 0)
    cout << "YES\n";
  else
    cout << "NO\n";
  return 0;
}
bool chk(vector<string> &s, vector<vector<int>> &dp, int i, int j) {
  int n = s.size(), m = s[0].size();
  int k, a, b, pflg = 0, lflg = 0, oflg = 0;
  dp[i][j] = 1;
  for (k = i + 1; k < n; ++k) {
    if (s[k][j] == '*') {
      dp[k][j] = 1;
      if (lflg == 0) {
        for (a = j - 1; a >= 0; --a) {
          if (s[k][a] == '*')
            dp[k][a] = 1;
          else
            break;
        }
        for (b = j + 1; b < m; ++b) {
          if (s[k][b] == '*')
            dp[k][b] = 1;
          else
            break;
        }
        if (a == j - 1 && j + 1 == b) continue;
        if (a < j - 1 && j + 1 < b)
          lflg = 1;
        else
          oflg = 1;
      } else
        pflg = 1;
      if (oflg == 1) break;
    } else
      break;
  }
  return pflg;
}
