Free context grammar for $\mathscr{L_1}=\{a^{3n}b^{5n}|n\geq0\}$ 
I need to bulid a free context grammar for $\mathscr{L_1}=\{a^{3n}b^{5n}|n\geq0\}$ 

My try:
$$S\to N_0|N_1|N_2\\N_0\to \varepsilon\\N_1\to aaabbbbb|N_2\\N_2\to aaaN_1bbbbb$$

I'm not sure if my attempt is correct, if it's correct, any another solutions are appreciated

 A: This is correct. To prove it is right, consider the following: We have three choices when we apply the first rule. The first choice is "$N_0\rightarrow\epsilon$" which gives us the identity element. The second choice is "$N_1\rightarrow a^3b^5$" or "N_1\rightarrow N_2". The first produces the element $a^3b^5$, and the second produces the same thing as choosing $N_2$ originally so it's extraneous here. After choosing "$N_2\rightarrow aaaN_1bbbbb$" we have produced something of the proper form for set membership. Now we need to make a choice at the $N_1$ level. Both choices preserve the requisite number and ordering of $a$ and $b$ in the string, so there is no way to produce something not in the language.
To see everything in the language is producible, note that we can make $\epsilon$. Every other elt is of the form $a^{3n}b^{5n}$. Fix some $n$. If $n=1$, then we produce the element by going: "$S\rightarrow N_1$, and then $N_1\rightarrow aaabbbbb$. Otherwise, we can go "$S\rightarrow N_2$", and then repeat the pair "$N_2\rightarrow aaaN_1bbbbb$," "$N_1\rightarrow N_2$" $n-2$ times. This produces $a^{3(n-2)}n^{5(n-2)}$, or the empty string if $n=2$. Finally, go "$N_2\rightarrow aaaN_1bbbbb$," "$N_1\rightarrow aaabbbbb$." This appends $a^6$ to the front of the string and appends $b^{10}$ to the back of the string, no matter what we started with, giving us $a^{3n}b^{5n}$.
