#include <bits/stdc++.h>
using namespace std;
int n;
struct Letter {
  int len;
  int cnt[26];
  Letter() {
    memset(cnt, 0, sizeof(cnt));
    len = 0;
  }
  Letter(const char *in) : Letter() {
    for (int i = 0; in[i]; i++) cnt[in[i] - 'a']++, len++;
  }
};
bool operator<(const Letter &lhs, const Letter &rhs) {
  if (lhs.len != rhs.len) return lhs.len < rhs.len;
  for (int i = 0; i < 26; i++)
    if (lhs.cnt[i] != rhs.cnt[i]) return lhs.cnt[i] < rhs.cnt[i];
  return false;
}
multiset<Letter> str[3];
string ans;
void small() {
  static char in[103];
  puts("? 1 1");
  fflush(stdout);
  scanf("%s", in);
  if (n == 1) return printf("! %s\n", in), void();
  puts("? 2 2");
  fflush(stdout);
  scanf("%s", in + 1);
  printf("! %s\n", in);
  return;
}
void parse(int l, int r, multiset<Letter> &tar) {
  static char in[103];
  printf("? %d %d\n", l, r);
  fflush(stdout);
  for (int i = 0; i < (r - l + 1) * (r - l + 2) / 2; i++) {
    scanf("%s", in);
    tar.insert(Letter(in));
  }
}
void doo(int len) {
  Letter count;
  for (auto &i : str[2]) {
    if (i.len == len)
      for (int j = 0; j < 26; j++) count.cnt[j] += i.cnt[j];
    else if (i.len == len - 1)
      for (int j = 0; j < 26; j++) count.cnt[j] -= i.cnt[j];
  }
  for (int i = len; i <= n - len + 1; i++) count.cnt[ans[i] - 'a']--;
  for (int i = 0; i < 26; i++)
    if (count.cnt[i]) {
      ans.push_back(i + 'a');
      break;
    }
}
int main() {
  scanf("%d", &n);
  if (n <= 2) return small(), 0;
  parse(1, n / 2 + (n & 1) - 1, str[0]);
  parse(1, n / 2 + (n & 1), str[1]);
  parse(1, n, str[2]);
  for (auto &i : str[0]) {
    str[1].erase(str[1].find(i));
  }
  str[1].insert(Letter());
  for (auto it = str[1].begin(), prev = it; it != str[1].end(); prev = it++) {
    if (it == str[1].begin()) continue;
    for (int i = 0; i < 26; i++)
      if ((*it).cnt[i] != (*prev).cnt[i]) {
        ans.push_back(i + 'a');
        break;
      }
  }
  ans.push_back(' ');
  reverse(ans.begin(), ans.end());
  for (int i = n / 2; i >= 1; i--) doo(i);
  printf("! %s\n", ans.c_str() + 1);
  return 0;
}
