import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.traits;

void main() {
  auto s = readln.strip.split.map!(to!int).array;
  immutable h = s[0], w = s[1];
  auto a = new string[h];
  foreach (i; 0 .. h) {
    a[i] = readln.strip;
  }
  int c;
  foreach (i; 0 .. h) {
    foreach (j; 0 .. w) {
      if (a[i][j] == '*') ++c;
    }
  }
  bool test() {
    foreach (i; 0 .. h) {
      foreach (j; 0 .. w) {
        if (a[i][j] == '*') {
          int go (int di, int dj) {
            int x = i + di;
            int y = j + dj;
            int r;
            while (x >= 0 && x < h && y >= 0 && y < w && a[x][y] == '*') {
              ++r;
              x += di;
              y += dj;
            }
            return r;
          }
          auto e = new int[4];
          e[0] = go (0, 1);
          e[1] = go (0, -1);
          e[2] = go (1, 0);
          e[3] = go (-1, 0);
          if (e.minElement () > 0 && e.sum == c - 1) {
            return true;
          }
        }
      }
    }
    return false;
  }
  writeln (test() ? "YES" : "NO");
}

