# Black box algorithm to find standard generators of Co2

	set F 0
	set G 0
	set V 0
	set X 0

lbl SEMISTD
	rand 1
	ord 1 A
	incr V
	if V gt 1000 then timeout
	if A notin 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 18 20 &
		23 24 28 30 then fail 
	if F eq 0 then
		if A in 16 18 28 then
			div A 2 B
			pwr B 1 2
			set F 1
		endif
	endif
	if G eq 0 then
		if A in 15 30 then
			div A 5 C
			pwr C 1 3
			set G 1
		endif
	endif

	if F eq 0 then jmp SEMISTD
	if G eq 0 then jmp SEMISTD
	
	set Y 0
	set Z 0
	set U 0
lbl CONJUGATE
	incr X
	if X gt 1000 then timeout
	incr Y
	rand 4
	cjr 3 4
	mu 2 3 5
	ord 5 D
	if D notin 4 5 6 7 8 9 10 11 12 14 15 16 18 20 23 24 28 30 then fail
	
	if D eq 7 then
		set Z 1   # We are in the correct conjugacy class!
	endif

	if Z eq 0 then
		if Y gt 35 then
			set G 0
			jmp SEMISTD
		endif
	
		# Certain product orders are much more likely to
		# occur with 5B elements (and vice versa)
		if D in 6 12 14 24 30 then incr U  
		if D in 9 11 15 23 then decr U

		if U eq 3 then
			# Probably a 5B element.
			set G 0
			jmp SEMISTD
		endif
	endif

	if D noteq 28 then jmp CONJUGATE

	# Once we've got y s.t. o(xy) = 28, we need to check
	# o(xyy) = 9 if we don't yet know that y is in the right
	# class.
	if Z eq 0 then
		mu 5 3 6  # abb

		ord 6 E

		if E notin 9 15 then fail
		if E eq 15 then
			set G 0
			jmp SEMISTD
		endif
	endif
	

	oup 2 2 3
