SlideShare ist ein Scribd-Unternehmen logo
1 von 40
1
2
3
(   /   )
            (   /   )




                        4
min.    f (x)
    s. t.   x∈S
f                   X
S                   X

x∈S                           f
x


                        S=∅
              S=∅




                                  5
inf{f (x)|x ∈ S}




                   6
•
•
    •
    •
    •
•
    •
    •
•
•
•

        7
8
X      n                         Rn                    f           S



            aij , bi , cj (i = 1, · · · , m; j = 1, · · · , n)
            xj (j = 1, · · · , n)
    min.     c 1 x1 + · · · + c n xn
    s. t.    ai1 x1 + · · · + ain xn ≤ bi (i = 1, · · · , l)
             ai1 x1 + · · · + ain xn = bi (i = l + 1, · · · , m)




                                                                       9
aij , bi , cj (i = 1, · · · , m; j = 1, · · · , n)


min.     c 1 x1 + · · · + c n xn
s. t.    ai1 x1 + · · · + ain xn ≥ bi (i = 1, · · · , m)
         xj ≥ 0(j = 1, · · · , n)


min.     cT x
s. t.    Ax ≥ b
         x≥0




                                                             10
n                  n                    n
      aj xj = b →         aj xj ≤ b,           aj xj ≥ b
j=1                 j=1                j=1




        n                        n
max.         cj xj → min. −           c j xj
       j=1                      j=1
 n                        n
      a j xj ≤ b → −          aj xj ≥ −b
j=1                     j=1




x → x = x1 − x2 , x1 ≥ 0, x2 ≥ 0

                                                           11
min.    c 1 x1 + · · · + c n xn
s. t.   ai1 x1 + · · · + ain xn = bi (i = 1, · · · , m)
        xj ≥ 0(j = 1, · · · , n)


min.    cT x
s. t.   Ax = b
        x≥0




                                                          12
min.    c 1 x1 + · · · + c n xn
s. t.   ai1 x1 + · · · + ain xn ≥ bi (i = 1, · · · , m)
        xj ≥ 0(j = 1, · · · , n)

i                                    xn+i
ai1 x1 + · · · + ain xn ≥ bi → ai1 x1 + · · · + ain xn − xn+i = bi , xn+i ≥ 0




                                                                                13
14
15
min.    cT x
s. t.   Ax ≥ b
        x≥0
         z = cT x            x = (xx+1 , · · · , xn+m )
min.    z
s. t.   z = 0 + cT x
        x = −b + Ax
        x, x ≥ 0
                     z   z




                                                          16
min.    cT x
s. t.   Ax ≥ b
        x≥0
         z = cT x             x = (xx+1 , · · · , xn+m )
min.    z
s. t.   z = 0 + cT x     {n + 1, · · · , n + m}
        x = −b + Ax
        x, x ≥ 0
                     z   z




                                                           16
z = 0 + cT x
x = −b + Ax




               17
D           B



  z                              xs



                                      xs

Dr0 /|Drs | = min{Di0 /|Dis ||Dis < 0, i ∈ B  {z}}, Drs < 0
                xr
       r
            (r, s)


                                                               18
D                 r                 s             Drs = 0
D                         B                 N
    D         i   Di (i = r)        r       Dr   Dis /Drs
        xs              xr
Di
r Dr         −1/Drs            xs                xr
                              Ds
B ← B  {r} ∪ {s} N ← N  {r} ∪ {s}




                                                                19
z = 0 − 2x1 − x2 − x3
x4 = 4 − 2x1 − 2x2 + x3
x5 = 4 − 2x1 − 4x3
x6 = 1 + 4x1 − 3x2 + x3
        (4, 1)
 z = −4 + x4 + x2 − 2x3
x1 = 2 − 1/2x4 − x2 + 1/2x3
x5 = 0 + x4 + 2x2 − 5x3
x6 = 0 − 2x4 − 7x2 + 3x3




                              20
min.  −2x1 − x2 − x3
s. t. −2x1 − 2x2 + x3 ≥ −4
      −2x1 − 4x3 ≥ −4
      4x1 − 3x2 + x3 ≥ −1
      x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
                       x4 , x5 , x6
 z = 0 − 2x1 − x2 − x3
x4 = 4 − 2x1 − 2x2 + x3
x5 = 4 − 2x1 − 4x3
x6 = 1 + 4x1 − 3x2 + x3

(x1 , x2 , x3 , x4 , x5 , x6 , z) = (0, 0, 0, 4, 4, 1, 0)



                                                            21
x1 = 1                x4 = 2, x5 = 2, x6 = 5, z = −2
x1 = 2                x4 = 0, x5 = 0, x6 = 9, z = −4
x1 = 3                x4 = −2, x5 = −2, x6 = 13, z = −6
                                         x1 2

(x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4)
 x1
                                         x1     x4
   (4, 1)
 z = −4 + x4 + x2 − 2x3
x1 = 2 − 1/2x4 − x2 + 1/2x3
x5 = 0 + x4 + 2x2 − 5x3
x6 = 0 − 2x4 − 7x2 + 3x3
                                                             22
x1 = 1                x4 = 2, x5 = 2, x6 = 5, z = −2
x1 = 2                x4 = 0, x5 = 0, x6 = 9, z = −4
x1 = 3                x4 = −2, x5 = −2, x6 = 13, z = −6
                                         x1 2

(x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4)
 x1
                                         x1     x4
   (4, 1)
 z = −4 + x4 + x2 − 2x3
x1 = 2 − 1/2x4 − x2 + 1/2x3
x5 = 0 + x4 + 2x2 − 5x3
x6 = 0 − 2x4 − 7x2 + 3x3
                                                             23
x3                     x5
 z = −4 + 3/5x4 + 1/52 + 2/5x5
x1 = 2 − 2/5x4 − 4/5x2 − 1/10x5
x3 = 0 + 1/5x4 + 2/5x2 − 1/5x5
x6 = 9 − 7/5x4 − 29/5x2 − 3/5x5


           (x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4)




                                                                        24
D           B



  z                              xs



                                      xs

Dr0 /|Drs | = min{Di0 /|Dis ||Dis < 0, i ∈ B  {z}}, Drs < 0
                xr
       r
            (r, s)


                                                               25
b≤0




      26
min.     cT x
 s. t.    Ax ≥ b
          x≥0
     xa              e = (1, · · · , 1) ∈ Rm
 min.     xa
 s. t.    Ax + exa ≥ b
          x ≥ 0, xa ≥ 0
xa


xa



                                               27
za = x a
  za = 0 + 0T x + x a
  x = −b + Ax + exa
b≤0

                                   xr
(r, a)




                                        28
min.    −x1 − 2x2
 s. t.   −x1 − x2 ≥ −1
         x1 + x2 ≥ 1
         x1 ≥ 0, x2 ≥ 0

 za = xa
  z = −x1 − 2x2
 x3 = 1 − x1 − x2 + xa
 x4 = −1 + x1 + x2 + xa
(4, a)
  za = 1 − x1 − x2 + x4
   z = −x1 − 2x2
 x3 = 2 − 2x1 − 2x2 + x4
 xa = 1 − x1 − x2 + x4
                           29
(a, 1)
za = x a
 z = −1 + xa − x2 − x4
x3 = 2xa − x4
x1 = 1 − xa − x2 + x4




                         30
xa

              xr
(r, a)




                   31
32
33
solveLP(cvec, bvec, Amat, maximum = FALSE,
        const.dir = rep( "<=", length( bvec ) ))



cvec               b
bvec               c               min.    cT x
Amat           A                   s. t.   Ax ≥ b
maximum                                    x≥0
const.dir




                                                    34
min.    −2x1 − x2 − x3
s. t.   −2x1 − 2x2 + x3 ≥ −4
        −2x1 − 4x3 ≥ −4
        4x1 − 3x2 + x3 ≥ −1
        x1 ≥ 0, x2 ≥ 0, x3 ≥ 0



> cvec <- c(-2, -1, -1)
> bvec <- c(-4, -4, -1)
> Amat <- rbind(c(-2, -1, -1), c(-2, 0, -4),
               c(4, -3, 1))
> result <-solveLP(cvec, bvec, Amat,
                   const.dir=rep(">=",length(bvec)))

                                                       35
> result$opt        #
[1] -4
> result$solution   #
1 2 3
2 0 0
> result$iter1      #   1
[1] 0
> result$iter2      #   1
[1] 1



                            36
37
•
•
    •
    •
•
•




        38
39

Weitere ähnliche Inhalte

Was ist angesagt?

Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Shohei Taniguchi
 
OpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシングOpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシングToshihiro Kamishima
 
相関係数は傾きに影響される
相関係数は傾きに影響される相関係数は傾きに影響される
相関係数は傾きに影響されるMitsuo Shimohata
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~Kensuke Otsuki
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半T T
 
PRML 2.3節 - ガウス分布
PRML 2.3節 - ガウス分布PRML 2.3節 - ガウス分布
PRML 2.3節 - ガウス分布Yuki Soma
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門Eita Sugimoto
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章Hakky St
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰hagino 3000
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木 Miyoshi Yuya
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門k h
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別Hiroshi Nakagawa
 
第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知Tetsuma Tada
 
SVMについて
SVMについてSVMについて
SVMについてmknh1122
 
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会Kenyu Uehara
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 

Was ist angesagt? (20)

Rの高速化
Rの高速化Rの高速化
Rの高速化
 
Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)
 
PRML 第4章
PRML 第4章PRML 第4章
PRML 第4章
 
OpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシングOpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシング
 
相関係数は傾きに影響される
相関係数は傾きに影響される相関係数は傾きに影響される
相関係数は傾きに影響される
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半
 
PRML 2.3節 - ガウス分布
PRML 2.3節 - ガウス分布PRML 2.3節 - ガウス分布
PRML 2.3節 - ガウス分布
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別
 
第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知
 
SVMについて
SVMについてSVMについて
SVMについて
 
lsh
lshlsh
lsh
 
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 

Mehr von Hidekazu Tanaka

ggplot2 に入門してみた
ggplot2 に入門してみたggplot2 に入門してみた
ggplot2 に入門してみたHidekazu Tanaka
 
データベースのお話
データベースのお話データベースのお話
データベースのお話Hidekazu Tanaka
 
バギングで構築された各決定木
バギングで構築された各決定木バギングで構築された各決定木
バギングで構築された各決定木Hidekazu Tanaka
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習Hidekazu Tanaka
 
Rによるやさしい統計学 第16章 : 因子分析
Rによるやさしい統計学 第16章 : 因子分析Rによるやさしい統計学 第16章 : 因子分析
Rによるやさしい統計学 第16章 : 因子分析Hidekazu Tanaka
 

Mehr von Hidekazu Tanaka (11)

ggplot2 に入門してみた
ggplot2 に入門してみたggplot2 に入門してみた
ggplot2 に入門してみた
 
データベースのお話
データベースのお話データベースのお話
データベースのお話
 
フォントのお話
フォントのお話フォントのお話
フォントのお話
 
フォントのお話
フォントのお話フォントのお話
フォントのお話
 
バギングで構築された各決定木
バギングで構築された各決定木バギングで構築された各決定木
バギングで構築された各決定木
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習
 
RHadoop の紹介
RHadoop の紹介RHadoop の紹介
RHadoop の紹介
 
Rの紹介
Rの紹介Rの紹介
Rの紹介
 
R meets Hadoop
R meets HadoopR meets Hadoop
R meets Hadoop
 
RでMapreduce
RでMapreduceRでMapreduce
RでMapreduce
 
Rによるやさしい統計学 第16章 : 因子分析
Rによるやさしい統計学 第16章 : 因子分析Rによるやさしい統計学 第16章 : 因子分析
Rによるやさしい統計学 第16章 : 因子分析
 

Rで解く最適化問題 線型計画問題編

  • 1. 1
  • 2. 2
  • 3. 3
  • 4. ( / ) ( / ) 4
  • 5. min. f (x) s. t. x∈S f X S X x∈S f x S=∅ S=∅ 5
  • 7. • • • • • • • • • • • 7
  • 8. 8
  • 9. X n Rn f S aij , bi , cj (i = 1, · · · , m; j = 1, · · · , n) xj (j = 1, · · · , n) min. c 1 x1 + · · · + c n xn s. t. ai1 x1 + · · · + ain xn ≤ bi (i = 1, · · · , l) ai1 x1 + · · · + ain xn = bi (i = l + 1, · · · , m) 9
  • 10. aij , bi , cj (i = 1, · · · , m; j = 1, · · · , n) min. c 1 x1 + · · · + c n xn s. t. ai1 x1 + · · · + ain xn ≥ bi (i = 1, · · · , m) xj ≥ 0(j = 1, · · · , n) min. cT x s. t. Ax ≥ b x≥0 10
  • 11. n n n aj xj = b → aj xj ≤ b, aj xj ≥ b j=1 j=1 j=1 n n max. cj xj → min. − c j xj j=1 j=1 n n a j xj ≤ b → − aj xj ≥ −b j=1 j=1 x → x = x1 − x2 , x1 ≥ 0, x2 ≥ 0 11
  • 12. min. c 1 x1 + · · · + c n xn s. t. ai1 x1 + · · · + ain xn = bi (i = 1, · · · , m) xj ≥ 0(j = 1, · · · , n) min. cT x s. t. Ax = b x≥0 12
  • 13. min. c 1 x1 + · · · + c n xn s. t. ai1 x1 + · · · + ain xn ≥ bi (i = 1, · · · , m) xj ≥ 0(j = 1, · · · , n) i xn+i ai1 x1 + · · · + ain xn ≥ bi → ai1 x1 + · · · + ain xn − xn+i = bi , xn+i ≥ 0 13
  • 14. 14
  • 15. 15
  • 16. min. cT x s. t. Ax ≥ b x≥0 z = cT x x = (xx+1 , · · · , xn+m ) min. z s. t. z = 0 + cT x x = −b + Ax x, x ≥ 0 z z 16
  • 17. min. cT x s. t. Ax ≥ b x≥0 z = cT x x = (xx+1 , · · · , xn+m ) min. z s. t. z = 0 + cT x {n + 1, · · · , n + m} x = −b + Ax x, x ≥ 0 z z 16
  • 18. z = 0 + cT x x = −b + Ax 17
  • 19. D B z xs xs Dr0 /|Drs | = min{Di0 /|Dis ||Dis < 0, i ∈ B {z}}, Drs < 0 xr r (r, s) 18
  • 20. D r s Drs = 0 D B N D i Di (i = r) r Dr Dis /Drs xs xr Di r Dr −1/Drs xs xr Ds B ← B {r} ∪ {s} N ← N {r} ∪ {s} 19
  • 21. z = 0 − 2x1 − x2 − x3 x4 = 4 − 2x1 − 2x2 + x3 x5 = 4 − 2x1 − 4x3 x6 = 1 + 4x1 − 3x2 + x3 (4, 1) z = −4 + x4 + x2 − 2x3 x1 = 2 − 1/2x4 − x2 + 1/2x3 x5 = 0 + x4 + 2x2 − 5x3 x6 = 0 − 2x4 − 7x2 + 3x3 20
  • 22. min. −2x1 − x2 − x3 s. t. −2x1 − 2x2 + x3 ≥ −4 −2x1 − 4x3 ≥ −4 4x1 − 3x2 + x3 ≥ −1 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 x4 , x5 , x6 z = 0 − 2x1 − x2 − x3 x4 = 4 − 2x1 − 2x2 + x3 x5 = 4 − 2x1 − 4x3 x6 = 1 + 4x1 − 3x2 + x3 (x1 , x2 , x3 , x4 , x5 , x6 , z) = (0, 0, 0, 4, 4, 1, 0) 21
  • 23. x1 = 1 x4 = 2, x5 = 2, x6 = 5, z = −2 x1 = 2 x4 = 0, x5 = 0, x6 = 9, z = −4 x1 = 3 x4 = −2, x5 = −2, x6 = 13, z = −6 x1 2 (x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4) x1 x1 x4 (4, 1) z = −4 + x4 + x2 − 2x3 x1 = 2 − 1/2x4 − x2 + 1/2x3 x5 = 0 + x4 + 2x2 − 5x3 x6 = 0 − 2x4 − 7x2 + 3x3 22
  • 24. x1 = 1 x4 = 2, x5 = 2, x6 = 5, z = −2 x1 = 2 x4 = 0, x5 = 0, x6 = 9, z = −4 x1 = 3 x4 = −2, x5 = −2, x6 = 13, z = −6 x1 2 (x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4) x1 x1 x4 (4, 1) z = −4 + x4 + x2 − 2x3 x1 = 2 − 1/2x4 − x2 + 1/2x3 x5 = 0 + x4 + 2x2 − 5x3 x6 = 0 − 2x4 − 7x2 + 3x3 23
  • 25. x3 x5 z = −4 + 3/5x4 + 1/52 + 2/5x5 x1 = 2 − 2/5x4 − 4/5x2 − 1/10x5 x3 = 0 + 1/5x4 + 2/5x2 − 1/5x5 x6 = 9 − 7/5x4 − 29/5x2 − 3/5x5 (x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 0, 0, 9, −4) 24
  • 26. D B z xs xs Dr0 /|Drs | = min{Di0 /|Dis ||Dis < 0, i ∈ B {z}}, Drs < 0 xr r (r, s) 25
  • 27. b≤0 26
  • 28. min. cT x s. t. Ax ≥ b x≥0 xa e = (1, · · · , 1) ∈ Rm min. xa s. t. Ax + exa ≥ b x ≥ 0, xa ≥ 0 xa xa 27
  • 29. za = x a za = 0 + 0T x + x a x = −b + Ax + exa b≤0 xr (r, a) 28
  • 30. min. −x1 − 2x2 s. t. −x1 − x2 ≥ −1 x1 + x2 ≥ 1 x1 ≥ 0, x2 ≥ 0 za = xa z = −x1 − 2x2 x3 = 1 − x1 − x2 + xa x4 = −1 + x1 + x2 + xa (4, a) za = 1 − x1 − x2 + x4 z = −x1 − 2x2 x3 = 2 − 2x1 − 2x2 + x4 xa = 1 − x1 − x2 + x4 29
  • 31. (a, 1) za = x a z = −1 + xa − x2 − x4 x3 = 2xa − x4 x1 = 1 − xa − x2 + x4 30
  • 32. xa xr (r, a) 31
  • 33. 32
  • 34. 33
  • 35. solveLP(cvec, bvec, Amat, maximum = FALSE, const.dir = rep( "<=", length( bvec ) )) cvec b bvec c min. cT x Amat A s. t. Ax ≥ b maximum x≥0 const.dir 34
  • 36. min. −2x1 − x2 − x3 s. t. −2x1 − 2x2 + x3 ≥ −4 −2x1 − 4x3 ≥ −4 4x1 − 3x2 + x3 ≥ −1 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 > cvec <- c(-2, -1, -1) > bvec <- c(-4, -4, -1) > Amat <- rbind(c(-2, -1, -1), c(-2, 0, -4), c(4, -3, 1)) > result <-solveLP(cvec, bvec, Amat, const.dir=rep(">=",length(bvec))) 35
  • 37. > result$opt # [1] -4 > result$solution # 1 2 3 2 0 0 > result$iter1 # 1 [1] 0 > result$iter2 # 1 [1] 1 36
  • 38. 37
  • 39. • • • • • • 38
  • 40. 39

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n