#version 450
layout(local_size_x_id = 10, local_size_y = 20) in;

layout(constant_id = 0) const int a = 1;
layout(constant_id = 1) const int b = 2;

layout(set = 1, binding = 0) writeonly buffer SSBO
{
	int v[];
};

void main()
{
	int spec_const_array_size[b];
	spec_const_array_size[0] = 10;
	spec_const_array_size[1] = 40;
	spec_const_array_size[a] = a;
	v[a + gl_WorkGroupSize.x + gl_WorkGroupSize.y + gl_GlobalInvocationID.x] = b + spec_const_array_size[1 - a];
}