#include <bits/stdc++.h>
using namespace std;
template <class U, class V>
ostream& operator<<(ostream& os, const pair<U, V>& p) {
  os << "(" << p.first << ", " << p.second << ")";
  return os;
}
template <class U, class V>
istream& operator>>(istream& in, pair<U, V>& p) {
  in >> p.first >> p.second;
  return in;
}
long long h, w;
bool center(long long i, long long j, string* arr) {
  if (arr[i][j] != '*' || i == 0 || i == h - 1 || j == 0 || j == w - 1) {
    return false;
  }
  return (arr[i - 1][j] == '*') && (arr[i + 1][j] == '*') &&
         (arr[i][j - 1] == '*') && (arr[i][j + 1] == '*');
}
int main() {
  scanf("%lld %lld", &h, &w);
  ;
  string arr[h];
  for (long long i = 0; i < h; i++) {
    cin >> arr[i];
  }
  bool found = false;
  for (long long i = 0; i < h; i++) {
    for (long long j = 0; j < w; j++) {
      if (center(i, j, arr)) {
        found = true;
        for (long long x = j; x >= 0 && arr[i][x] == '*'; x--) {
          arr[i][x] = '.';
        }
        for (long long x = j + 1; x < w && arr[i][x] == '*'; x++) {
          arr[i][x] = '.';
        }
        for (long long y = i - 1; y >= 0 && arr[y][j] == '*'; y--) {
          arr[y][j] = '.';
        }
        for (long long y = i + 1; y < h && arr[y][j] == '*'; y++) {
          arr[y][j] = '.';
        }
        i = h;
        break;
      }
    }
  }
  if (!found) {
    cout << "NO\n";
  } else {
    for (long long i = 0; i < h; i++) {
      for (long long j = 0; j < w; j++) {
        if (arr[i][j] == '*') {
          cout << "NO\n";
          return 0;
        }
      }
    }
    cout << "YES\n";
  }
  return 0;
}
