Go: package main

import (
	"bufio"
	"os"
	"strings"
	"strconv"
	"sort"
	"fmt"
)

var scanner = bufio.NewScanner(os.Stdin)

func main() {
	for scanner.Scan() {
		input := strings.Split(scanner.Text(), ",")
		cards := make([]int, 5)
		for i :=range input {
			cards[i], _ = strconv.Atoi(input[i])
		}
		sort.Sort(sort.IntSlice(cards))
		if cards[0] == cards[1] && cards[2] == cards[3] && cards[2] == cards[1] {
			fmt.Println("four card")
		} else if cards[1] == cards[2] && cards[3] == cards[4] && cards[3] == cards[2]{
			fmt.Println("four card")
		} else if cards[0] == cards[1] && cards[1] == cards[2] && cards[3] == cards[4] {
			fmt.Println("full house")
		} else if cards[0] == cards[1] && cards[2] == cards[3] && cards[3] == cards[4] {
			fmt.Println("full house")
		} else if cards[0] == 1 && cards[1] == 10 && cards[2] == 11 && cards[3] == 12 && cards[4] == 13 {
			fmt.Println("straight")
		} else if cards[0]+1 == cards[1] && cards[1]+1 == cards[2] && cards[2]+1 == cards[3] && cards[3]+1 == cards[4] {
			fmt.Println("straight")
		} else if (cards[0] == cards[1] && cards[1] == cards[2]) || (cards[1] == cards[2] && cards[2] == cards[3]) || (cards[2] == cards[3] && cards[3] == cards[4]) {
			fmt.Println("three card")
		} else if ((cards[0] == cards[1]) && ((cards[2] == cards[3]) || (cards[3] == cards[4]))) || ((cards[1] == cards[2]) && (cards[3] == cards[4])) {
			fmt.Println("two pair")
		} else if cards[0] == cards[1] || cards[1] == cards[2] || cards[2] == cards[3] || cards[3] == cards[4] {
			fmt.Println("one pair")
		} else {
			fmt.Println("null")
		}
	}
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <cstring>
#include <cmath>
#include <queue>
#include <map>
#include <set>
#include <stdio.h>
#include <sstream>
#include <stdlib.h>
#include <math.h>
using namespace std;
 
#define rep(i,n) for(int i=0; i<n; i++)
#define FOR(i,s,n) for(int i=s; i<n; i++)
#define ALL(x) x.begin(), x.end()
#define pb push_back
#define foreach(it,con) for(auto it=con.begin();it!=con.end();it++)
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;

string judge(int* nums){

	return "null";
}

int main(){
	int nums[5];
	while(scanf("%d,%d,%d,%d,%d",&nums[0],&nums[1],&nums[2],&nums[3],&nums[4])+1){
		cout << judge(nums) << endl;
	}
	return 0;	
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
int main() {
	int l[5];
	char c;
	while (cin >> l[0] >> c >> l[1] >> c >> l[2] >> c >> l[3] >> c >> l[4]) {
		sort(l, l + 5);
		if (l[0] == l[1] && l[1] == l[2] && l[2] == l[3])
			cout << "four card";
		else if (l[4] == l[1] && l[1] == l[2] && l[2] == l[3])
			cout << "four card";
		else if (l[0] == l[1] && l[1] == l[2] && l[4] == l[3])
			cout << "full house";
		else if (l[0] == l[1] && l[3] == l[2] && l[4] == l[3])
			cout << "full house";
		else if (l[4] == l[3] + 1 && l[3] == l[2] + 1 && l[2] == l[1] + 1 && l[1] == l[0] + 1)
			cout << "straight";
		else if (l[0] == 1 && l[1] == 10 && l[2] == 11 && l[3] == 12 && l[4] == 13)
			cout << "straight";
		else if (l[0] == l[1] && l[1] == l[2])
			cout << "three card";
		else if (l[3] == l[1] && l[1] == l[2])
			cout << "three card";
		else if (l[3] == l[4] && l[3] == l[2])
			cout << "three card";
		else if (l[0] == l[1] && l[2] == l[3])
			cout << "two pair";
		else if (l[0] == l[1] && l[4] == l[3])
			cout << "two pair";
		else if (l[2] == l[1] && l[4] == l[3])
			cout << "two pair";
		else if (l[0] == l[1] || l[1] == l[2] || l[2] == l[3] || l[3] == l[4])
			cout << "one pair";
		else cout << "null";
		cout << endl;
	}
}

C++: #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
    char buf[32];
    while (fgets(buf, 32, stdin)) {
        int f[5];
        int k=0;
        char* p=strtok(buf, ",\n");
        f[0] = atoi(p);
        while (p = strtok(NULL, ",\n")) f[++k] = atoi(p);
        sort(f, f+5);

        string res = "null";
        for (int i=0; i<2; ++i) {
            if (f[0]==f[1]||f[1]==f[2]||f[2]==f[3]||f[3]==f[4])
                res = "one pair";
            if (f[0]==f[1]&&(f[2]==f[3]||f[3]==f[4]) || f[1]==f[2]&&f[3]==f[4])
                res = "two pair";
            if (f[0]==f[2]||f[1]==f[3]||f[2]==f[4]) res = "three card";
            if (f[0]+1==f[1]&&f[1]+1==f[2]&&f[2]+1==f[3]&&f[3]+1==f[4])
                res = "straight";
            if (f[0]==f[2]&&f[3]==f[4] || f[0]==f[1]&&f[2]==f[4])
                res = "full house";
            if (f[0]==f[3]||f[1]==f[4]) res = "four card";
            for (int j=0; j<5; j++) if (f[j]==1) f[j]=14;
            sort(f, f+5);
        }
        puts(res.c_str());
    }
    return 0;
}

C++: #include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int main(){

  int num[5];
  char trash;
  vector<int> V;

  while(cin >> num[0] >> trash >> num[1] >> trash >> num[2] >> trash >> num[3] >> trash >> num[4]){
    for(int i = 0; i < 5; i++) V.push_back(num[i]);

    sort(V.begin(), V.end());


    if(V[1] == V[0] && V[2] == V[0] && V[3] == V[0] || V[2] == V[1] && V[3] == V[1] && V[4] == V[1]){
      cout << "four card"<< endl;
    }else if(V[1] == V[0] && V[2] == V[0] && V[3] == V[4] || V[3] == V[2] && V[4] == V[2] && V[1] == V[0]){
      cout << "full house" << endl;
    }else if(V[1] == V[0]+1 && V[2] == V[0]+2 &&V[3] == V[0]+3 && V[4] == V[0]+4 || V[0] == 1 &&  V[1] == 10 && V[2] == 11 && V[3] == 12 && V[4] == 13){
      cout << "straight" << endl;
    }else if(V[1] == V[0] && V[2] == V[0] || V[2] == V[1] && V[3] == V[1] || V[3] == V[2] && V[4] == V[2]){
      cout << "three card" << endl;
    }else if(V[1] == V[0] && V[2] == V[3] || V[2] == V[1] && V[3] == V[4]){
      cout << "two pair" << endl;
    }else if(V[1] == V[0] || V[2] == V[1] || V[3] == V[2] || V[4] == V[3]){
      cout << "one pair" << endl;
    }else{
      cout << "null" <<endl;
    }

    V.clear();


  }

  return 0;
}