// File: iZhangHui[P]CppPrimer/CH11_AssociativeContainers/examples/pair.cc
// Function: main
int main()
{
	vector<string> v;
	string s;
	while (cin >> s)
		v.push_back(s);

	preliminaries(v);  // sort v into size order

	// all three output statements should be the same
	auto biggest = process(v);
	cout << biggest.first << " " << biggest.second << endl;
	biggest = process2(v);
	cout << biggest.first << " " << biggest.second << endl;
	biggest = process3(v);
	cout << biggest.first << " " << biggest.second << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movl $0x0, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x4520
leaq -0x40(%rbp), %rdi
callq 0x21a0
movq 0x8755(%rip), %rdi      # 0xafe0
leaq -0x40(%rbp), %rsi
callq 0x2180
movq %rax, -0xd0(%rbp)
jmp 0x289d
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2170
movb %al, -0xd1(%rbp)
jmp 0x28bb
movb -0xd1(%rbp), %al
testb $0x1, %al
jne 0x28c7
jmp 0x28e9
leaq -0x20(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4540
jmp 0x28d6
jmp 0x2884
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae3
leaq -0x20(%rbp), %rdi
callq 0x2520
jmp 0x28f4
leaq -0x78(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x26d0
jmp 0x2903
movq 0x86c6(%rip), %rdi      # 0xafd0
leaq -0x78(%rbp), %rsi
callq 0x2100
movq %rax, -0xe0(%rbp)
jmp 0x291c
movq -0xe0(%rbp), %rdi
leaq 0x4700(%rip), %rsi      # 0x702a
callq 0x2110
movq %rax, -0xe8(%rbp)
jmp 0x2938
movq -0xe8(%rbp), %rdi
movl -0x58(%rbp), %esi
callq 0x21e0
movq %rax, -0xf0(%rbp)
jmp 0x2950
movq -0xf0(%rbp), %rdi
movq 0x8662(%rip), %rsi      # 0xafc0
callq 0x2140
jmp 0x2965
leaq -0xa0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x2740
jmp 0x2977
leaq -0x78(%rbp), %rdi
movq %rdi, -0x100(%rbp)
leaq -0xa0(%rbp), %rsi
movq %rsi, -0x108(%rbp)
callq 0x45b0
movq -0x108(%rbp), %rdi
callq 0x45f0
movq -0x100(%rbp), %rsi
movq 0x8621(%rip), %rdi      # 0xafd0
callq 0x2100
movq %rax, -0xf8(%rbp)
jmp 0x29bd
movq -0xf8(%rbp), %rdi
leaq 0x465f(%rip), %rsi      # 0x702a
callq 0x2110
movq %rax, -0x110(%rbp)
jmp 0x29d9
movq -0x110(%rbp), %rdi
movl -0x58(%rbp), %esi
callq 0x21e0
movq %rax, -0x118(%rbp)
jmp 0x29f1
movq -0x118(%rbp), %rdi
movq 0x85c1(%rip), %rsi      # 0xafc0
callq 0x2140
jmp 0x2a06
leaq -0xc8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x27f0
jmp 0x2a18
leaq -0x78(%rbp), %rdi
movq %rdi, -0x128(%rbp)
leaq -0xc8(%rbp), %rsi
movq %rsi, -0x130(%rbp)
callq 0x45b0
movq -0x130(%rbp), %rdi
callq 0x45f0
movq -0x128(%rbp), %rsi
movq 0x8580(%rip), %rdi      # 0xafd0
callq 0x2100
movq %rax, -0x120(%rbp)
jmp 0x2a5e
movq -0x120(%rbp), %rdi
leaq 0x45be(%rip), %rsi      # 0x702a
callq 0x2110
movq %rax, -0x138(%rbp)
jmp 0x2a7a
movq -0x138(%rbp), %rdi
movl -0x58(%rbp), %esi
callq 0x21e0
movq %rax, -0x140(%rbp)
jmp 0x2a92
movq -0x140(%rbp), %rdi
movq 0x8520(%rip), %rsi      # 0xafc0
callq 0x2140
jmp 0x2aa7
leaq -0x78(%rbp), %rdi
callq 0x45f0
leaq -0x40(%rbp), %rdi
callq 0x20b0
leaq -0x20(%rbp), %rdi
callq 0x4610
movl -0x4(%rbp), %eax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x45f0
leaq -0x40(%rbp), %rdi
callq 0x20b0
leaq -0x20(%rbp), %rdi
callq 0x4610
movq -0x48(%rbp), %rdi
callq 0x21f0
nop