const MAX_N = 2000000; DIST = 14; MOD8 = 8; MAX_ALPHA = 9; var cnt: array[0..MOD8-1, 0..MAX_ALPHA] of integer; a, alpha: array[1..MAX_N] of integer; f: text; begin Assign(f, '27-1b.txt'); reset(f); var N : integer; readln(f, N); var ans := 0; var add := 0; for var i := 1 to N do begin var x: integer; readln(f, x); a[i] := x; alpha[i] := 0; while x mod 3 = 0 do begin alpha[i] += 1; x := x div 3; end; alpha[i] := min(alpha[i], MAX_ALPHA); cnt[a[i] mod MOD8][alpha[i]] += 1; if (2 * alpha[i] >= MAX_ALPHA) and ((2 * a[i]) mod MOD8 = 0) then add -= 1; var j := i - 1; while (j > 0) and (i - j < DIST) do begin if ((a[i] + a[j]) mod MOD8 = 0) and (alpha[i] + alpha[j] >= MAX_ALPHA) then ans -= 1; j -= 1; end; end; for var r1 := 0 to MOD8 - 1 do begin var r2 := (MOD8 - r1) mod MOD8; for var a1 := 0 to MAX_ALPHA do begin for var a2 := MAX_ALPHA - a1 to MAX_ALPHA do add += cnt[r1][a1] * cnt[r2][a2]; end; end; ans += add div 2; writeln(ans); end.