import std.stdio : writeln, writefln, readln; import std.array : array, split; import std.conv : to; import std.range.primitives; import std.range : enumerate, iota, repeat, retro, assumeSorted; import std.algorithm.searching : all, any, canFind, count, countUntil; import std.algorithm.comparison : max, min; import std.algorithm.iteration : each, group, filter, map, reduce, permutations, sum, uniq; import std.algorithm.sorting : sort; import std.algorithm.mutation : reverse, swap; void main() { auto a = readln.split.to!(int[]).sort().group.array; if (a.length == 2) { writeln(a.canFind!"a[1] == 4" ? "NO HAND" : "FULL HOUSE"); } else if (a.length == 3) { writeln(a.canFind!"a[1] == 3" ? "THREE CARD" : "TWO PAIR"); } else if (a.length == 4) { writeln("ONE PAIR"); } else { writeln("NO HAND"); } } void scan(T...)(ref T args) { import std.stdio : readln; import std.array : split; import std.conv : to; import std.range.primitives; string[] line = readln.split; foreach (ref arg; args) { arg = line.front.to!(typeof(arg)); line.popFront(); } assert(line.empty); } void fillAll(R, T)(ref R arr, T value) { static if (is(typeof(arr[] = value))) { arr[] = value; } else { foreach (ref e; arr) { fillAll(e, value); } } }