Kostka数計算プログラムを Schur関数と単項対称式間の変換行列を出力する様に改造しました。
出力結果
λ | = 6 までは文献によってチェック済み。 |
|λ| = 1
1 [ 1 ] 1
|λ| = 2
1 [ 2 ] 2 [ 1 1 ] 1 1 0 1
|λ| = 3
1 [ 3 ] 2 [ 2 1 ] 3 [ 1 1 1 ] 1 1 1 0 1 2 0 0 1
|λ| = 4
1 [ 4 ] 2 [ 3 1 ] 3 [ 2 2 ] 4 [ 2 1 1 ] 5 [ 1 1 1 1 ] 1 1 1 1 1 0 1 1 2 3 0 0 1 1 2 0 0 0 1 3 0 0 0 0 1
|λ| = 5
1 [ 5 ] 2 [ 4 1 ] 3 [ 3 2 ] 4 [ 3 1 1 ] 5 [ 2 2 1 ] 6 [ 2 1 1 1 ] 7 [ 1 1 1 1 1 ] 1 1 1 1 1 1 1 0 1 1 2 2 3 4 0 0 1 1 2 3 5 0 0 0 1 1 3 6 0 0 0 0 1 2 5 0 0 0 0 0 1 4 0 0 0 0 0 0 1
|λ| = 6
1 [ 6 ] 2 [ 5 1 ] 3 [ 4 2 ] 4 [ 4 1 1 ] 5 [ 3 3 ] 6 [ 3 2 1 ] 7 [ 3 1 1 1 ] 8 [ 2 2 2 ] 9 [ 2 2 1 1 ] 10 [ 2 1 1 1 1 ] 11 [ 1 1 1 1 1 1 ] 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 2 3 2 3 4 5 0 0 1 1 1 2 3 3 4 6 9 0 0 0 1 0 1 3 1 3 6 10 0 0 0 0 1 1 1 1 2 3 5 0 0 0 0 0 1 2 2 4 8 16 0 0 0 0 0 0 1 0 1 4 10 0 0 0 0 0 0 0 1 1 2 5 0 0 0 0 0 0 0 0 1 3 9 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 0 0 0 1
ソース・プログラム
中間チェック出力を残したままで、綺麗にしてないw
module m_kostka implicit none type :: t_box integer :: k, ix, iy end type t_box contains recursive subroutine ssyt(n, nd, table, list) integer, intent(in) :: n, nd integer, intent(in out) :: table(0:, 0:) type(t_box), intent(in) :: list(:) integer :: ix, iy, k if (size(list) == n) then write(9, *) list else do iy = 1, ubound(table, 2) if ( any( table(:, iy - 1) == 0 ) ) exit do ix = 1, ubound(table, 1) do k = 1, nd if ( is_ok(ix, iy) ) then table(ix, iy) = k call ssyt(n, nd, table, [list, t_box(k, ix, iy)]) table(ix, iy) = 0 end if end do end do end do end if return contains logical function is_ok(ix, iy) integer, intent(in) :: ix, iy if (table(ix, iy) == 0 .and. & table(ix - 1, iy) <= k .and. table(ix - 1, iy) /= 0 .and. & table(ix, iy - 1) < k .and. table(ix, iy - 1) /= 0 ) then is_ok = .true. else is_ok = .false. end if return end function is_ok end subroutine ssyt subroutine kostka_number(n, mu) implicit none integer, intent(in) :: n, mu(:) type(t_box) :: list(n) integer :: tableau(n, n) integer :: i, k k = 0 main:do read(9, *, end = 999) list tableau = 0 do i = 1, size(list) tableau(list(i)%ix, list(i)%iy) = list(i)%k end do do i = 1, size(mu) if (count(tableau == i) /= mu(i)) cycle main end do print * do i = 1, n if ( all(tableau(:, i) == 0) ) exit write(*, '(*(i2))') pack(tableau(:, i), tableau(:, i) /= 0) end do k = k + 1 end do main 999 write(*, *) 'total number of tableaux =', k write(10, *) k return end subroutine kostka_number end module m_kostka module m_partition implicit none contains recursive subroutine partition(list, n, n0) integer, intent(in) :: list(:), n, n0 integer :: i if (n == 0) then write(8) size(list), list else do i = n - n0, n - 1 call partition([list, n - i], i, min(i, n - i)) end do end if return end subroutine partition end module m_partition program Kostka use m_kostka use m_partition implicit none character(80) :: fmt integer, allocatable :: lambda(:), table(:, :), mu(:), yt(:, :), tmp(:), KostkaMat(:) type(t_box), allocatable :: list(:) integer :: i, j, k, m, n n = 10 call partition([integer::], n, n) rewind(8) k = 0 do read(8, end = 99) k = k + 1 end do 99 continue allocate( tmp(n), yt(n, k) ) yt = 0 rewind(8) do i = 1, k tmp = 0 read(8) m, tmp(1:m) yt(:, i) = tmp print *, 'tmp', i, ' :', tmp end do allocate( list(0) ) do i = 1, size(yt, 2) lambda = pack(yt(:, i), yt(:, i) /= 0) n = sum(lambda) do j = 1, size(yt, 2) mu = pack(yt(:, j), yt(:, j) /= 0) print *, 'lambda [', lambda, ']' print *, 'mu [', mu, ']' call init_table(lambda) call ssyt(n, n, table, list) rewind(9) call kostka_number(n, mu) deallocate( table ) rewind(9) print *, '------------------------------' end do print *, '====================================' end do do i = 1, size(yt, 2) lambda = pack(yt(:, i), yt(:, i) /= 0) print '(*(g3.0))', i, '[', lambda, ']' end do allocate(KostkaMat(k*k)) rewind(10) read(10, *) KostkaMat write(fmt, '(3g)') '(', k, 'g4.0)' print fmt, KostkaMat stop contains subroutine init_table(lambda) integer, intent(in) :: lambda(:) integer, parameter :: NG = huge(0) integer :: i allocate( table(0:maxval(lambda, 1), 0:size(lambda)) ) table = NG table(0, :) = -1 table(:, 0) = -1 do i = 1, size(lambda) table(1:lambda(i), i) = 0 end do return end subroutine init_table end program Kostka
出力結果 補足
結果のチェックしてないw
|λ| = 7
1 [ 7 ] 2 [ 6 1 ] 3 [ 5 2 ] 4 [ 5 1 1 ] 5 [ 4 3 ] 6 [ 4 2 1 ] 7 [ 4 1 1 1 ] 8 [ 3 3 1 ] 9 [ 3 2 2 ] 10 [ 3 2 1 1 ] 11 [ 3 1 1 1 1 ] 12 [ 2 2 2 1 ] 13 [ 2 2 1 1 1 ] 14 [ 2 1 1 1 1 1 ] 15 [ 1 1 1 1 1 1 1 ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 2 3 2 2 3 4 3 4 5 6 0 0 1 1 1 2 3 2 3 4 6 5 7 10 14 0 0 0 1 0 1 3 1 1 3 6 3 6 10 15 0 0 0 0 1 1 1 2 2 3 4 4 6 9 14 0 0 0 0 0 1 2 1 2 4 8 6 11 20 35 0 0 0 0 0 0 1 0 0 1 4 1 4 10 20 0 0 0 0 0 0 0 1 1 2 3 3 6 11 21 0 0 0 0 0 0 0 0 1 1 2 3 5 10 21 0 0 0 0 0 0 0 0 0 1 3 2 6 15 35 0 0 0 0 0 0 0 0 0 0 1 0 1 5 15 0 0 0 0 0 0 0 0 0 0 0 1 2 5 14 0 0 0 0 0 0 0 0 0 0 0 0 1 4 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
|λ| = 8
1 [ 8 ] 2 [ 7 1 ] 3 [ 6 2 ] 4 [ 6 1 1 ] 5 [ 5 3 ] 6 [ 5 2 1 ] 7 [ 5 1 1 1 ] 8 [ 4 4 ] 9 [ 4 3 1 ] 10 [ 4 2 2 ] 11 [ 4 2 1 1 ] 12 [ 4 1 1 1 1 ] 13 [ 3 3 2 ] 14 [ 3 3 1 1 ] 15 [ 3 2 2 1 ] 16 [ 3 2 1 1 1 ] 17 [ 3 1 1 1 1 1 ] 18 [ 2 2 2 2 ] 19 [ 2 2 2 1 1 ] 20 [ 2 2 1 1 1 1 ] 21 [ 2 1 1 1 1 1 1 ] 22 [ 1 1 1 1 1 1 1 1 ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 2 3 1 2 2 3 4 2 3 3 4 5 3 4 5 6 7 0 0 1 1 1 2 3 1 2 3 4 6 3 4 5 7 10 6 8 11 15 20 0 0 0 1 0 1 3 0 1 1 3 6 1 3 3 6 10 3 6 10 15 21 0 0 0 0 1 1 1 1 2 2 3 4 3 4 5 7 10 6 9 13 19 28 0 0 0 0 0 1 2 0 1 2 4 8 2 4 6 11 20 8 14 24 40 64 0 0 0 0 0 0 1 0 0 0 1 4 0 1 1 4 10 1 4 10 20 35 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 3 4 3 4 6 9 14 0 0 0 0 0 0 0 0 1 1 2 3 2 4 5 9 15 7 13 23 40 70 0 0 0 0 0 0 0 0 0 1 1 2 1 1 3 5 10 6 9 16 30 56 0 0 0 0 0 0 0 0 0 0 1 3 0 1 2 6 15 3 9 21 45 90 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 5 0 1 5 15 35 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 3 6 11 21 42 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 6 2 5 12 26 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 3 6 13 30 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 2 8 24 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 6 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 5 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 9 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
|λ| = 9
1 [ 9 ] 2 [ 8 1 ] 3 [ 7 2 ] 4 [ 7 1 1 ] 5 [ 6 3 ] 6 [ 6 2 1 ] 7 [ 6 1 1 1 ] 8 [ 5 4 ] 9 [ 5 3 1 ] 10 [ 5 2 2 ] 11 [ 5 2 1 1 ] 12 [ 5 1 1 1 1 ] 13 [ 4 4 1 ] 14 [ 4 3 2 ] 15 [ 4 3 1 1 ] 16 [ 4 2 2 1 ] 17 [ 4 2 1 1 1 ] 18 [ 4 1 1 1 1 1 ] 19 [ 3 3 3 ] 20 [ 3 3 2 1 ] 21 [ 3 3 1 1 1 ] 22 [ 3 2 2 2 ] 23 [ 3 2 2 1 1 ] 24 [ 3 2 1 1 1 1 ] 25 [ 3 1 1 1 1 1 1 ] 26 [ 2 2 2 2 1 ] 27 [ 2 2 2 1 1 1 ] 28 [ 2 2 1 1 1 1 1 ] 29 [ 2 1 1 1 1 1 1 1 ] 30 [ 1 1 1 1 1 1 1 1 1 ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 2 3 1 2 2 3 4 2 2 3 3 4 5 2 3 4 3 4 5 6 4 5 6 7 8 0 0 1 1 1 2 3 1 2 3 4 6 2 3 4 5 7 10 3 5 7 6 8 11 15 9 12 16 21 27 0 0 0 1 0 1 3 0 1 1 3 6 1 1 3 3 6 10 1 3 6 3 6 10 15 6 10 15 21 28 0 0 0 0 1 1 1 1 2 2 3 4 2 3 4 5 7 10 4 6 8 7 10 14 20 12 17 24 34 48 0 0 0 0 0 1 2 0 1 2 4 8 1 2 4 6 11 20 2 6 11 8 14 24 40 17 28 45 70 105 0 0 0 0 0 0 1 0 0 0 1 4 0 0 1 1 4 10 0 1 4 1 4 10 20 4 10 20 35 56 0 0 0 0 0 0 0 1 1 1 1 1 2 2 3 3 4 5 2 4 6 5 7 10 14 9 13 19 28 42 0 0 0 0 0 0 0 0 1 1 2 3 1 2 4 5 9 15 3 7 12 9 16 27 45 21 36 60 99 162 0 0 0 0 0 0 0 0 0 1 1 2 0 1 1 3 5 10 1 3 5 6 9 16 30 14 23 40 70 120 0 0 0 0 0 0 0 0 0 0 1 3 0 0 1 2 6 15 0 2 6 3 9 21 45 12 27 55 105 189 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 5 0 0 1 0 1 5 15 1 5 15 35 70 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 4 1 3 6 4 7 12 19 10 17 29 49 84 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 2 4 6 6 10 17 30 16 28 50 91 168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 6 0 2 6 3 8 18 36 12 27 56 111 216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 0 1 2 3 6 13 30 12 24 50 105 216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 1 0 2 8 24 3 12 34 84 189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 6 0 1 6 21 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 3 5 3 6 11 21 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 8 16 8 17 36 77 168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 4 10 2 7 20 50 120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 5 4 7 15 35 84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 9 3 9 24 63 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 2 10 35 105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 7 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 14 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 14 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
|λ| = 10
1 [ 10 ] 2 [ 9 1 ] 3 [ 8 2 ] 4 [ 8 1 1 ] 5 [ 7 3 ] 6 [ 7 2 1 ] 7 [ 7 1 1 1 ] 8 [ 6 4 ] 9 [ 6 3 1 ] 10 [ 6 2 2 ] 11 [ 6 2 1 1 ] 12 [ 6 1 1 1 1 ] 13 [ 5 5 ] 14 [ 5 4 1 ] 15 [ 5 3 2 ] 16 [ 5 3 1 1 ] 17 [ 5 2 2 1 ] 18 [ 5 2 1 1 1 ] 19 [ 5 1 1 1 1 1 ] 20 [ 4 4 2 ] 21 [ 4 4 1 1 ] 22 [ 4 3 3 ] 23 [ 4 3 2 1 ] 24 [ 4 3 1 1 1 ] 25 [ 4 2 2 2 ] 26 [ 4 2 2 1 1 ] 27 [ 4 2 1 1 1 1 ] 28 [ 4 1 1 1 1 1 1 ] 29 [ 3 3 3 1 ] 30 [ 3 3 2 2 ] 31 [ 3 3 2 1 1 ] 32 [ 3 3 1 1 1 1 ] 33 [ 3 2 2 2 1 ] 34 [ 3 2 2 1 1 1 ] 35 [ 3 2 1 1 1 1 1 ] 36 [ 3 1 1 1 1 1 1 1 ] 37 [ 2 2 2 2 2 ] 38 [ 2 2 2 2 1 1 ] 39 [ 2 2 2 1 1 1 1 ] 40 [ 2 2 1 1 1 1 1 1 ] 41 [ 2 1 1 1 1 1 1 1 1 ] 42 [ 1 1 1 1 1 1 1 1 1 1 ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 2 1 2 3 1 2 2 3 4 1 2 2 3 3 4 5 2 3 2 3 4 3 4 5 6 3 3 4 5 4 5 6 7 4 5 6 7 8 9 0 0 1 1 1 2 3 1 2 3 4 6 1 2 3 4 5 7 10 3 4 3 5 7 6 8 11 15 5 6 8 11 9 12 16 21 10 13 17 22 28 35 0 0 0 1 0 1 3 0 1 1 3 6 0 1 1 3 3 6 10 1 3 1 3 6 3 6 10 15 3 3 6 10 6 10 15 21 6 10 15 21 28 36 0 0 0 0 1 1 1 1 2 2 3 4 1 2 3 4 5 7 10 3 4 4 6 8 7 10 14 20 7 8 11 15 13 18 25 35 15 21 29 40 55 75 0 0 0 0 0 1 2 0 1 2 4 8 0 1 2 4 6 11 20 2 4 2 6 11 8 14 24 40 6 8 14 24 17 28 45 70 20 32 50 76 112 160 0 0 0 0 0 0 1 0 0 0 1 4 0 0 0 1 1 4 10 0 1 0 1 4 1 4 10 20 1 1 4 10 4 10 20 35 4 10 20 35 56 84 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 3 3 4 5 3 4 3 5 7 6 8 11 15 6 7 10 14 12 17 24 34 15 21 30 43 62 90 0 0 0 0 0 0 0 0 1 1 2 3 0 1 2 4 5 9 15 2 4 3 7 12 9 16 27 45 9 11 19 31 24 40 65 105 30 50 81 129 203 315 0 0 0 0 0 0 0 0 0 1 1 2 0 0 1 1 3 5 10 1 1 1 3 5 6 9 16 30 3 6 9 16 14 23 40 70 20 31 51 85 140 225 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 1 2 6 15 0 1 0 2 6 3 9 21 45 2 3 9 21 12 27 55 105 15 33 65 120 210 350 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 5 0 0 0 0 1 0 1 5 15 0 0 1 5 1 5 15 35 1 5 15 35 70 126 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 1 2 3 2 3 4 5 2 3 4 6 5 7 10 14 6 9 13 19 28 42 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 4 2 4 2 5 9 6 10 16 24 6 8 14 24 18 30 49 78 24 40 66 108 176 288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 1 1 2 4 6 6 10 17 30 6 9 14 23 21 35 60 105 30 51 87 150 260 450 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 6 0 1 0 2 6 3 8 18 36 3 4 11 24 15 33 66 126 21 45 90 171 315 567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 0 0 0 1 2 3 6 13 30 1 3 6 13 12 24 50 105 20 38 74 145 280 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0 1 0 2 8 24 0 0 2 8 3 12 34 84 4 16 44 104 224 448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 6 0 0 0 1 0 1 6 21 0 1 6 21 56 126 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 3 3 4 6 9 3 4 7 12 10 17 29 49 16 26 45 79 140 252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 3 1 3 6 10 1 2 5 12 7 15 30 55 10 22 44 85 160 300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 3 5 3 3 5 7 7 12 20 35 10 19 34 61 112 210 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 8 16 2 4 8 16 14 28 56 112 24 48 96 192 384 768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 4 10 0 0 2 8 3 11 30 70 5 17 46 110 245 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 5 0 1 1 2 4 7 15 35 10 16 31 65 140 300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 9 0 0 1 3 3 9 24 63 6 18 45 108 252 567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 1 0 2 10 35 0 3 15 50 140 350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 7 0 0 1 7 28 84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 3 6 11 21 5 11 23 47 98 210 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 10 21 6 12 24 51 112 252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 2 6 15 35 5 13 33 80 190 450 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 5 15 0 2 9 30 85 225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 14 4 8 18 44 112 288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 14 0 3 12 38 112 315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 0 0 2 12 48 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 8 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 5 14 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 9 28 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 20 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1