#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const char aa = 'a';
const double eps = 1E-9;
template <typename T>
bool within(T a, T b, T c) {
  return (a <= c && a >= b);
}
int gcd(int m, int n) {
  if (m == 0 || n == 0) return m + n;
  return gcd(n, m % n);
}
long long binom[30][30];
const int maxn = 40001;
const int dr[] = {0, -1, 0, 1};
const int dc[] = {1, 0, -1, 0};
void setBinom() {
  int Z = (int)sqrt(sizeof(binom) / sizeof(int) + eps);
  memset(binom, 0, sizeof(binom));
  for (int i = 0; i < (int)(Z); i++)
    for (int j = 0; j < (int)(Z); j++) {
      if (i && j)
        binom[i][j] = binom[i - 1][j] + binom[i][j - 1];
      else
        binom[i][j] = 1;
    }
}
int n, m, k;
int cal() {
  int nR = 0, nG = 0;
  int ttl = 0;
  cin >> n >> m >> k;
  vector<string> bd(101);
  string empty(m, '-');
  vector<int> nimSum(10);
  for (int i = 0; i < (int)(n); i++) {
    cin >> bd[i];
    if (bd[i] == "RR" || bd[i] == "GG" || bd[i] == empty || bd[i] == "R" ||
        bd[i] == "G")
      continue;
    int pG = bd[i].find('G');
    int pR = bd[i].find('R');
    if (pG == string::npos) {
      nR++;
      continue;
    }
    if (pR == string::npos) {
      nG++;
      continue;
    }
    ttl++;
    int d = abs(pR - pG) - 1;
    for (int j = 0; j < (int)(10); j++)
      if (((d & (1 << (j))) != 0)) nimSum[j]++;
  }
  if (nG && nR) return 2;
  if (nG) return 0;
  if (nR) return 1;
  for (int i = 0; i < (int)(10); i++) nimSum[i] %= k + 1;
  for (int i = 0; i < (int)(10); i++)
    if (nimSum[i]) return 0;
  return 1;
}
int main() {
  string ans[] = {"First", "Second", "Draw"};
  int a = cal();
  cout << ans[a] << endl;
}
