Solved - Trouble with Mesh Generation

Attempting to generate a large plane accross the x,y, axis, All Debug.Logs are triggered with the only error being:

“Failed setting triangles. The number
of supplied triangle indices must be a
multiple of 3.
UnityEngine.Mesh:set_triangles(Int32)
ChunkScript:Start() (at
Assets/Scripts/ChunkScript.js:42)”

However, The plane is not visible, and does not appear to have been generated. What is the problem? Here is my code:

#pragma strict

@script RequireComponent(MeshFilter, MeshCollider, MeshRenderer)

function Start () {
	var mesh : Mesh = new Mesh ();
	GetComponent(MeshFilter).mesh = mesh;

	// Do Vertices

	var vertices : Vector3[] = new Vector3[39999];

	for (var i : int = 0; i<10000; i=i+100) {
		for (var j : int = 0; j<100; j++) {
			vertices[i+j*4] = new Vector3(j, (i/100), 0);
			vertices[i+j*4+1] = new Vector3(j+1, (i/100), 0);
			vertices[i+j*4+2] = new Vector3(j, ((i/100)+1), 0);
			vertices[i+j*4+3] = new Vector3(j+1, ((i/100)+1), 0);
		}
	}

	mesh.vertices = vertices;
	Debug.Log("Vertices Done");
	
	// Do Triangles

	var tri : int[] = new int[59999];
	
	for (var ii : int = 0; ii<10000; ii=ii+100) {
		for (var jj : int = 0; jj<100; jj++) {
			tri[ii+jj*6] = ii+jj*6;
			tri[ii+jj*6+1] = ii+jj*6+2;
			tri[ii+jj*6+2] = ii+jj*6+3;

			tri[ii+jj*6+3] = ii+jj*6;
			tri[ii+jj*6+4] = ii+jj*6+3;
			tri[ii+jj*6+5] = ii+jj*6+1;

		}
	}
	
	mesh.triangles = tri;
	Debug.Log("Triangles Done");

	// Do Normals

	var normals : Vector3[] = new Vector3[39999];

	for (var k : int = 0; k<39999; k++) {
		normals[k] = -Vector3.forward;
	}

	mesh.normals = normals;
	Debug.Log("Normals Done");

	// Do UVs

	var uv : Vector2[] = new Vector2[39999];

	for (var iii : int = 0; iii<10000; iii=iii+100) {
		for (var jjj : int = 0; jjj<100; jjj++) {
			uv[iii+jjj*4] = new Vector2(jjj*0.0625, 0.03125*(iii/100));
			uv[iii+jjj*4+1] = new Vector2(jjj+1*0.0625, 0.03125*(iii/100));
			uv[iii+jjj*4+2] = new Vector2(jjj*0.0625, 0.03125*(iii/100)+1);
			uv[iii+jjj*4+3] = new Vector2(jjj+1*0.0625, 0.03125*(iii/100)+1);
		}
	}

	mesh.uv = uv;
	Debug.Log("UVs Done");
}

Issue involved number of triangles in array, i thought that an array of zero was still considered one object. Altered the script into:

#pragma strict

@script RequireComponent(MeshFilter, MeshCollider, MeshRenderer)

var mesh : Mesh = new Mesh ();

function Start () {

	// Do Vertices & Normals

	var vertices : Vector3[] = new Vector3[40000];
	var normals : Vector3[] = new Vector3[40000];
	var tri : int[] = new int[60000];

	for (var quad_y : int = 0; quad_y<100; quad_y++) {
		for (var quad_x : int = 0; quad_x<100; quad_x++) {
			// Bottom Left
			vertices[(400*quad_y)+(4*quad_x)+0] = new Vector3(transform.position.x+quad_x+0, transform.position.y+quad_y+0, 0);
			normals[(400*quad_y)+(4*quad_x)+0] = -Vector3.forward;
			// Bottom Right
			vertices[(400*quad_y)+(4*quad_x)+1] = new Vector3(transform.position.x+quad_x+1, transform.position.y+quad_y+0, 0);
			normals[(400*quad_y)+(4*quad_x)+1] = -Vector3.forward;
			// Top Left
			vertices[(400*quad_y)+(4*quad_x)+2] = new Vector3(transform.position.x+quad_x+0, transform.position.y+quad_y+1, 0);
			normals[(400*quad_y)+(4*quad_x)+2] = -Vector3.forward;
			// Top Right
			vertices[(400*quad_y)+(4*quad_x)+3] = new Vector3(transform.position.x+quad_x+1, transform.position.y+quad_y+1, 0);
			normals[(400*quad_y)+(4*quad_x)+3] = -Vector3.forward;
			
			// Triangle Set
			tri[(600*quad_y)+(6*quad_x)+0] = (400*quad_y)+(4*quad_x)+0;
			tri[(600*quad_y)+(6*quad_x)+1] = (400*quad_y)+(4*quad_x)+2;
			tri[(600*quad_y)+(6*quad_x)+2] = (400*quad_y)+(4*quad_x)+3;

			tri[(600*quad_y)+(6*quad_x)+3] = (400*quad_y)+(4*quad_x)+0;
			tri[(600*quad_y)+(6*quad_x)+4] = (400*quad_y)+(4*quad_x)+3;
			tri[(600*quad_y)+(6*quad_x)+5] = (400*quad_y)+(4*quad_x)+1;
		}
	}

	mesh.vertices = vertices;
	mesh.normals = normals;
	mesh.triangles = tri;
	Debug.Log("Vertices, Normals & Triangles Done");

	GetComponent(MeshFilter).mesh = mesh;
	Debug.Log("Finished in: " + (Time.realtimeSinceStartup*1000) + " ms!");
}