 {
     float *changes, *sum;
     
-    /*
+
     cudaMalloc((void**)&changes, sizeof(float) * (n+1));
     cudaMalloc((void**)&sum, sizeof(float) * (n+1));
-    */
-    changes = (float *)malloc(sizeof(float) * (n+1));
-    sum = (float *)malloc(sizeof(float) * (n+1));
+
+    //changes = (float *)malloc(sizeof(float) * (n+1));
+    //sum = (float *)malloc(sizeof(float) * (n+1));
     
     do{
         init_array<<< 1, n >>>(changes, 0);

        parallel_prefix(changes, sum, n);
        cudaDeviceSynchronize();
    }while(sum[n] > 0);
    
}

__global__ void get_class_components_global(double *numbering, int *indptr, int *indices, float *mask, int n, float *roots)

    init_array<<< 1, N >>>(mask, 1);
    init_array_consecutive<<< 1, N >>>(roots);

    double delta = pow(8, ceil(log(N) / log(1.25)));
    int flag = 1;
    set<double> numbering_copy;
    cudaDeviceSynchronize();
    while(flag && delta >= 1){
        printf("1\n");
        get_class_components_global<<< 1,1 >>>(numbering_gpu, indptr_gpu, indices_gpu, mask, N, roots);
        cudaDeviceSynchronize();
        printf("2\n");
        stratify<<< 1, N >>>(numbering_gpu, roots, indptr_gpu, indices_gpu, delta, N);
