#include <bits/stdc++.h>
using namespace std;
void sc(char& c) {
  char temp[4];
  scanf("%s", temp);
  c = temp[0];
}
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
int testnum;
int R, C, K;
void preprocess() {}
void solve() {}
bool input() {
  scanf("%d", &R);
  scanf("%d", &C);
  scanf("%d", &K);
  char temp[1005];
  int cnt = 0;
  int sum = 0;
  int cnt1 = 0;
  int ronly = 0, gonly = 0;
  vector<int> diff;
  for (int i = 0; i < R; i++) {
    scanf("%s", temp);
    int posr = -1, posg = -1, pose = -1;
    for (int j = 0; j < C; j++) {
      if (temp[j] == 'R')
        posr = j;
      else if (temp[j] == 'G')
        posg = j;
      else
        pose = j;
    }
    if (posr >= 0 && posg < 0 && pose >= 0) ronly++;
    if (posr < 0 && posg >= 0 && pose >= 0) gonly++;
    if (posr >= 0 && posg >= 0) {
      cnt++;
      int d = abs(posr - posg) - 1;
      sum += d;
      if (abs(posr - posg) == 2) cnt1++;
      diff.push_back(d);
    }
  }
  if (ronly > 0 && gonly > 0)
    printf("Draw\n");
  else if (gonly > 0)
    printf("First\n");
  else if (ronly > 0)
    printf("Second\n");
  else {
    bool nonz = false;
    for (int i = 0; i < 10; i++) {
      int tot = 0;
      for (int j = 0; j < diff.size(); j++)
        if (diff[j] & (1 << i)) tot++;
      if (tot % (K + 1) != 0) {
        nonz = true;
        break;
      }
    }
    if (nonz)
      printf("First\n");
    else
      printf("Second\n");
  }
  return true;
}
int main() {
  preprocess();
  int T = 1;
  for (testnum = 1; testnum <= T; testnum++) {
    if (!input()) break;
    solve();
  }
}
