#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:167777216")
using namespace std;
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
int n, m, coord[2000][2000][2];
char st[2000][2000];
void dfs(int x, int y) {
  int i, tx, ty;
  coord[x % n][y % m][0] = x;
  coord[x % n][y % m][1] = y;
  for (i = 0; i < 4; i++) {
    tx = x + dx[i];
    ty = y + dy[i];
    if (st[tx % n][ty % m] == '.' &&
        (coord[tx % n][ty % m][0] != tx || coord[tx % n][ty % m][1] != ty)) {
      if (coord[tx % n][ty % m][0] == 0) {
        dfs(tx, ty);
      } else {
        printf("Yes\n");
        exit(0);
      }
    }
  }
}
int main() {
  int i, j, x, y;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%s", &st[i]);
    for (j = 0; j < m; j++) {
      if (st[i][j] == 'S') {
        x = i;
        y = j;
        st[i][j] = '.';
      }
    }
  }
  dfs(n * n + x, y + m * m);
  printf("No\n");
  return 0;
}
