| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | package main// Pair ...type Pair struct {	_1 int	_2 int}// Equals ...func (p1 Pair) Equals(p2 Pair) bool {	return p1._1 == p2._1 && p1._2 == p2._2}// PairStack ...type PairStack []Pair// Len ...func (ps PairStack) Len() int { return len(ps) }func (ps PairStack) Less(i, j int) bool {	if ps[i]._1 == ps[j]._1 {		return ps[i]._2 < ps[j]._2	}	return ps[i]._1 < ps[j]._1}func (ps PairStack) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] }// Top ...func (ps PairStack) Top() Pair {	return ps[len(ps)-1]}// Empty ...func (ps PairStack) Empty() bool {	return len(ps) == 0}// Push ...func (ps *PairStack) Push(p interface{}) {	*ps = append(*ps, p.(Pair))}// Pop ...func (ps *PairStack) Pop() interface{} {	x := (*ps)[len(*ps)-1]	*ps = (*ps)[:len(*ps)-1]	return x}
 |