```/* nag_mesh2d_inc (d06aac) Example Program.
*
* NAGPRODCODE Version.
*
* Copyright 2016 Numerical Algorithms Group.
*
* Mark 26, 2016.
*/

#include <stdio.h>
#include <nag.h>
#include <nag_stdlib.h>
#include <nagd06.h>

#define EDGE(I, J) edge[3*((J) -1)+(I) -1]
#define CONN(I, J) conn[3*((J) -1)+(I) -1]
#define COOR(I, J) coor[2*((J) -1)+(I) -1]

int main(void)
{
const Integer nvmax = 250;
double coef, power;
Integer exit_status, i1, i, itrace, k, nedge, nelt, nv, nvb, reftk;
Nag_Boolean smooth;
NagError fail;
char pmesh[2];
double *bspace = 0, *coor = 0;
Integer *conn = 0, *edge = 0;

INIT_FAIL(fail);

exit_status = 0;

printf("nag_mesh2d_inc (d06aac) Example Program Results\n\n");

/* Skip heading in data file */
scanf("%*[^\n] ");

/* Reading of the geometry */
scanf("%" NAG_IFMT "%" NAG_IFMT "%*[^\n] ", &nvb, &nedge);

if (nvb > nvmax) {
printf("Problem with the array dimensions\n");
printf(" nvb nvmax %6" NAG_IFMT "%6" NAG_IFMT "\n", nvb, nvmax);
printf(" Please increase the value of nvmax\n");
exit_status = -1;
goto END;
}

/* Allocate memory */

if (!(bspace = NAG_ALLOC(nvb, double)) ||
!(coor = NAG_ALLOC(2 * nvmax, double)) ||
!(conn = NAG_ALLOC(3 * (2 * nvmax - 1), Integer)) ||
!(edge = NAG_ALLOC(3 * nedge, Integer)))
{
printf("Allocation failure\n");
exit_status = -1;
goto END;
}

/* Coordinates of the boundary mesh vertices and boundary edges */

for (i = 1; i <= nvb; ++i) {
scanf("%" NAG_IFMT "", &i1);
scanf("%lf", &COOR(1, i));
scanf("%lf", &COOR(2, i));
scanf("%*[^\n] ");
}

for (i = 1; i <= nedge; ++i) {
scanf("%" NAG_IFMT "", &i1);
scanf("%" NAG_IFMT "", &EDGE(1, i));
scanf("%" NAG_IFMT "", &EDGE(2, i));
scanf("%" NAG_IFMT "", &EDGE(3, i));
scanf("%*[^\n] ");
}
scanf(" ' %1s '%*[^\n]", pmesh);

/* Initialize mesh control parameters */

for (i = 0; i < nvb; ++i)
bspace[i] = 0.05;

smooth = Nag_TRUE;
itrace = 0;
coef = 0.75;
power = 0.25;

/* Call to the mesh generator */

/* nag_mesh2d_inc (d06aac).
* Generates a two-dimensional mesh using a simple
* incremental method
*/
nag_mesh2d_inc(nvb, nvmax, nedge, edge, &nv, &nelt, coor, conn, bspace,
smooth, coef, power, itrace, 0, &fail);

if (fail.code == NE_NOERROR) {
if (pmesh[0] == 'N') {
printf(" nv   =%6" NAG_IFMT "\n", nv);
printf(" nelt =%6" NAG_IFMT "\n", nelt);
}
else if (pmesh[0] == 'Y') {
/* Output the mesh to view it using the NAG Graphics Library */

printf(" %10" NAG_IFMT "%10" NAG_IFMT "\n", nv, nelt);

for (i = 1; i <= nv; ++i)
printf("  %15.6e  %15.6e\n", COOR(1, i), COOR(2, i));

reftk = 0;
for (k = 1; k <= nelt; ++k) {
printf(" %10" NAG_IFMT "%10" NAG_IFMT "%10" NAG_IFMT "%10" NAG_IFMT
"\n", CONN(1, k), CONN(2, k), CONN(3, k), reftk);
}
}
else {
printf("Problem with the printing option Y or N\n");
exit_status = -1;
goto END;
}
}
else {
printf("Error from nag_mesh2d_inc (d06aac).\n%s\n", fail.message);
exit_status = 1;
goto END;
}

END:
NAG_FREE(bspace);
NAG_FREE(coor);
NAG_FREE(conn);
NAG_FREE(edge);

return exit_status;
}
```