/**
 * One two three four five six seven eight nine ten eleven twelve thirteen fourteen.
 * <pre>
 * int a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0;
 * </pre>
 */
class A {
	class B {
		class C {
			class D {
				class E {
					class F {
						class G {
							/**
							 * One two three four five six seven eight nine ten eleven twelve thirteen fourteen.
							 * <pre>
							 * int a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0;
							 * </pre>
							 */
							class H {
								class I {
									class J {
										class K {
											/**
											 * One two three four five six seven eight nine ten eleven twelve thirteen fourteen.
											 * <pre>
											 * int a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0;
											 * </pre>
											 */
											int a;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}