import std.algorithm;
import std.array;
import std.conv;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

bool ask (long value)
{
	writeln ("? ", value);
	stdout.flush ();
	return readln.strip == "Y";
}

void answer (long value)
{
	writeln ("! ", value);
	stdout.flush ();
}

void main ()
{
	long lo = 1;
	bool rem = false;
	while (true)
	{
		auto x = ask (lo);
		auto y = ask (lo * 10 - 1);
		if (x && !y)
		{
			rem = true;
		}
		if (x && y && rem)
		{
			break;
		}
		if (!x && y)
		{
			lo /= 10;
			break;
		}
		if (lo >= int.max * 10L)
		{
			lo = 1;
			break;
		}
		lo *= 10;
	}

	long hi = lo * 10 - 1;
	while (lo < hi)
	{
		long me = (lo + hi) / 2;
		if (ask (me * 10))
		{
			hi = me;
		}
		else
		{
			lo = me + 1;
		}
	}

	answer (lo);
}
