#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <limits.h>

using namespace std;
char *getline()
{
  char c;
  size_t bc=0;
  size_t bufsiz=PIPE_BUF;
  char *b = (char*)malloc(bufsiz);
  for(register unsigned i=0;(c=getc(stdin))!='\n';i++,bc++){
    if (i==bufsiz){
      char *b_n=(char*)realloc(b, bufsiz*=2);
      if (!b_n){perror("realloc fail!");}
      b=b_n;
    }
    b[i] = c;
  }
  b[bc]='\0';
  return b;
}
int main() {
  cout << "Who you might be?" <<endl;
  char *nmae=getline();
  cout << "Hello " << nmae << "!" <<endl;
  delete nmae;
  return 0;
}