Unity subdividing icosohedron script problem

So I wrote this script to subdivide an icosohedron, but when I try to execute it unity crashes.
Here is the code

using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;

[RequireComponent(typeof(MeshRenderer)), RequireComponent(typeof(MeshFilter))]

public class Icosohedron : MonoBehaviour {

    public int recursionLevel;
    private float t = (1 + Mathf.Sqrt(5)) / 2;
    private MeshFilter mf;
    // Use this for initialization
    void Start () {
        #region
        List<Vector3> verticies = new List<Vector3>();
        
        Vector3 aa = new Vector3(-1,  t,  0);
        Vector3 ab = new Vector3(1, t, 0);
        Vector3 ac = new Vector3(-1, -t, 0);
        Vector3 ad = new Vector3(1, -t, 0);

        Vector3 ae = new Vector3(0, -1, t);
        Vector3 af = new Vector3(0, 1, t);
        Vector3 ag = new Vector3(0, -1, -t);
        Vector3 ah = new Vector3(0, 1, -t);

        Vector3 ai = new Vector3(t, 0, -1);
        Vector3 aj = new Vector3(t, 0, 1);
        Vector3 ak = new Vector3(-t, 0, -1);
        Vector3 al = new Vector3(-t, 0, 1);

        verticies.Add(aa);
        verticies.Add(ab);
        verticies.Add(ac);
        verticies.Add(ad);
        verticies.Add(ae);
        verticies.Add(af);
        verticies.Add(ag);
        verticies.Add(ah);
        verticies.Add(ai);
        verticies.Add(aj);
        verticies.Add(ak);
        verticies.Add(al);

        List<int> triangles = new List<int>();

        triangles.AddRange(new int[] {
             0, 11, 5,
             0, 5, 1,
             0, 1, 7,
             0, 7, 10,
             0, 10, 11,

             1, 5, 9,
             5, 11, 4,
             11, 10, 2,
             10, 7, 6,
             7, 1, 8,

             3, 9, 4,
             3, 4, 2,
             3, 2, 6,
             3, 6, 8,
             3, 8, 9,

             4, 9, 5,
             2, 4, 11,
             6, 2, 10,
             8, 6, 7,
             9, 8, 1
        });
        #endregion
        mf = GetComponent<MeshFilter>();
        mf.mesh = CreateIcosohedron(verticies, triangles);
        print(mf.mesh.triangles.Length);
        print(mf.mesh.vertices.Length);
        for (int tri = 0; tri < triangles.Count/3; tri+=3)
        {
            Vector3 tempV1 = new Vector3();
            Vector3 tempV2 = new Vector3();
            Vector3 tempV3 = new Vector3();
            Vector3 NewVS12 = new Vector3();
            Vector3 NewVS23 = new Vector3();
            Vector3 NewVS13 = new Vector3();
            int[] TrianglesArray = triangles.ToArray();
            Vector3[] VertsArray = verticies.ToArray();
            tempV1 = VertsArray[tri];
            tempV2 = VertsArray[tri + 1];
            tempV3 = VertsArray[tri + 2];
            triangles.Remove(0);
            triangles.Remove(1);
            triangles.Remove(2);
            NewVS12 = Vector3.Slerp(tempV1, tempV2, 0.5f);
            NewVS23 = Vector3.Slerp(tempV2, tempV3, 0.5f);
            NewVS13 = Vector3.Slerp(tempV1, tempV3, 0.5f);

            verticies.Add(NewVS12);
            verticies.Add(NewVS23);
            verticies.Add(NewVS13);

            int VertNum1 = verticies.Count-2; //12
            int VertNum2 = verticies.Count - 1; //23
            int VertNum3 = verticies.Count; //13

            triangles.Add(VertNum1);
            triangles.Add(VertNum2); //Middle triangle
            triangles.Add(VertNum3);

            triangles.Add(VertNum1);
            triangles.Add(tri);     // adds 12
            triangles.Add(tri + 1);

            triangles.Add(VertNum2);
            triangles.Add(tri + 2); // adds 23
            triangles.Add(tri + 1);

            triangles.Add(VertNum3);
            triangles.Add(tri); // adds 13
            triangles.Add(tri + 2);
        }
        /*  Cycle through each triangle /
            turn lists into arrays /
            store old verts /
            Delete the triangle /
            make new verticies /
            Slerp verticies /
            Add Verts to list /
            Get what number the verticies are /
            Make 4 triangles ?
        */
        mf.mesh = CreateIcosohedron(verticies, triangles);
    }

    Mesh CreateIcosohedron(List<Vector3> Verts, List<int> triangles)
    {
        Mesh m;
        m = new Mesh();
        float t = (1 + Mathf.Sqrt(5)) / 2;
        Vector3[] array = new Vector3[99999];
        array = Verts.ToArray();
        m.vertices = array;
        int[] arrayt = new int[99999];
        arrayt = triangles.ToArray();
        m.triangles = arrayt;
        return m;
    }
}

That’s because you have an infinite loop:

for (int tri = 0; tri < triangles.Count/3; tri+=3)

In the body of that loop you’re removing 3 elements from triangles, but adding 12 new ones, so your counter is never going to reach triangles.Count/3.