Error trying to use runtime mesh component(from a plugin)

consistent crash reproduced in clean project, this line of code is what’s causing the crash.

mesh->CreateMeshSection(index, verts, tris, normals, uvs, vertexColors, tangents, true, EUpdateFrequency::Infrequent);

Access violation - code c0000005 (first/second chance not available)

UE4Editor_RuntimeMeshComponent_4272!URuntimeMeshComponent::CreateOrResetSection<FRuntimeMeshSection<FRuntimeMeshVertexSimple> >() [f:\futuregame\source\runtimemeshcomponent_v2.0\source\runtimemeshcomponent\public\runtimemeshcomponent.h:86]
UE4Editor_RuntimeMeshComponent_4272!URuntimeMeshComponent::CreateOrResetSectionLegacyType() [f:\futuregame\source\runtimemeshcomponent_v2.0\source\runtimemeshcomponent\private\runtimemeshcomponent.cpp:447]
UE4Editor_RuntimeMeshComponent_4272!URuntimeMeshComponent::CreateMeshSection() [f:\futuregame\source\runtimemeshcomponent_v2.0\source\runtimemeshcomponent\private\runtimemeshcomponent.cpp:884]
UE4Editor_FutureGame_8596!AChunkC::CreateMeshSectionDefault() [f:\futuregame\source\futuregame\private\chunkc.cpp:93]
UE4Editor_FutureGame_8596!AChunkC::GetCubes() [f:\futuregame\source\futuregame\private\chunkc.cpp:482]
UE4Editor_FutureGame_8596!AChunkC::execGetCubes() [f:\futuregame\source\futuregame\public\chunkc.h:15]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4474]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1308]
UE4Editor_Engine!AActor::ProcessEvent() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:649]
UE4Editor_FutureGame_8596!TBaseUFunctionDelegateInstance<AChunkC,TTypeWrapper<void> __cdecl(void),int,int,int>::Execute() [c:\program files\epic games\ue_4.14\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:128]
UE4Editor_Engine!FTimerUnifiedDelegate::Execute() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\engine\public imermanager.h:43]
UE4Editor_Engine!FTimerManager::Tick() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private imermanager.cpp:570]
UE4Editor_Engine!UWorld::Tick() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1394]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build++ue4+release-4.14+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1422]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build++ue4+release-4.14+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:371]
UE4Editor!FEngineLoop::Tick() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2859]
UE4Editor!GuardedMain() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launch.cpp:152]
UE4Editor!GuardedMainWrapper() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

I’m not sure what all of this means, if someone could help me figure out what is causing the crash that’d be great!

Can we see the rest of your code please? I use RMC extensively in my game and haven’t ever had a problem with it.

Break on that line…see what items are invalid.

I would guess that your ‘mesh’ is null.

.cpp
AChunkC::AChunkC()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don’t need it.
PrimaryActorTick.bCanEverTick = true;
mesh = CreateDefaultSubobject<URuntimeMeshComponent>(TEXT(“Runtime Mesh”));
RootComponent = mesh;
SetActorLocation({ 0,0,0 });
}

.h
UPROPERTY(EditAnywhere, Category = “Chunk”)
URuntimeMeshComponent* mesh;

ChunkC.cpp

// Fill out your copyright notice in the Description page of Project Settings.

#include “FutureGame.h”
#include “ChunkC.h”
#include “GetCubesTask.h”
#include <thread>
#include <iostream>
#include <string>
#include “RuntimeMeshLibrary.h”
#include “GetCubesTask.h”

using namespace std;

// Sets default values
AChunkC::AChunkC()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don’t need it.
PrimaryActorTick.bCanEverTick = true;
mesh = CreateDefaultSubobject<URuntimeMeshComponent>(TEXT(“Runtime Mesh”));
RootComponent = mesh;
SetActorLocation({ 0,0,0 });
}

// Called when the game starts or when spawned
void AChunkC::BeginPlay()
{
Super::BeginPlay();
CreateMeshSectionGet();
startGlobalTimer();
}

// Called every frame
void AChunkC::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
int range = getRenderDistance();
int pX = getPlayerX();
int pY = getPlayerY();
bool b = XPos == pX && YPos == pY;
if (!b) {
DestroyMesh(XPos, YPos);
XPos = pX;
YPos = pY;
return;
}
int index = world.update();
if (index > -1) {
FString s = FString::FromInt(index);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Blue, s);
mesh->ClearMeshSection(index);
}
}

void AChunkC::startGlobalTimer() {
FTimerHandle timerHandle;
GetWorld()->GetTimerManager().SetTimer(timerHandle, this, &AChunkC::CreateMeshSectionGet, 1.0f, true);
timerHandles.Add(timerHandle);
}

void AChunkC::startTimer(int x, int y, int index) {
FTimerHandle timerHandle;
FTimerDelegate TimerDel;
TimerDel.BindUFunction(this, FName(“GetCubes”), x, y, index);
GetWorld()->GetTimerManager().SetTimer(timerHandle,TimerDel,.2f,false);
timerHandles.Add(timerHandle);
}

void AChunkC::CreateMeshSectionGet() {
reset();
for (int i = -getRenderDistance() + XPos; i <= getRenderDistance() + XPos; i++)
for (int j = -getRenderDistance() + YPos; j <= getRenderDistance() + YPos; j++) {
if (!world.contains(i,j)) {
world.add(i,j);
startTimer(i,j, world.getLastIndex());
return;
}
}
}

void AChunkC::reset() {
Verts.Empty();
Tris.Empty();
Normals.Empty();
UVs.Empty();
VertexColors.Empty();
Tangents.Empty();
}

void AChunkC::CreateMeshSectionDefault(int index, TArray<FVector> verts, TArray<int> tris, TArray<FVector2D> uvs) {
TArray<FVector> normals;
TArray<FColor> vertexColors;
TArray<FRuntimeMeshTangent> tangents;
mesh->CreateMeshSection(index, verts, tris, normals, uvs, vertexColors, tangents, true, EUpdateFrequency::Infrequent);
}

void AChunkC::DestroyMesh(int x, int y)
{
world.destroyUnloadedChunks(x,y, getRenderDistance());
}

const int AChunkC::getRenderDistance()
{
return 3;
}

void AChunkC::getPlayerPos(int & XX, int & YY)
{
XX = getPlayerX();
YY = getPlayerY();
}

int AChunkC::getPlayerX()
{
ACharacter* player = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
if (player == NULL) return -1;
FVector pos = player->GetActorLocation();
return pos.X / (blockSize * chunkSize);
}

int AChunkC::getPlayerY()
{
ACharacter* player = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
if (player == NULL) return -1;
FVector pos = player->GetActorLocation();
return pos.Y / (blockSize * chunkSize);
}

void AChunkC::GetCubes(int ChunkX, int ChunkY, int index) {
FString s = FString::FromInt(ChunkX);
FString s2 = FString::FromInt(ChunkY);
FString r = " ";
FString r2;
r2.Append(s);
r2.Append(r);
r2.Append(s2);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, r2);

int edgeTable[256] = {{another big ol list}


int triTable[256][16] ={big ol list of ints, not listed cause its long}

TArray&lt;FVector&gt; Verts_local;
TArray&lt;int&gt; Tris_local;
TArray&lt;FVector2D&gt; UVs_local;

for (int x = 0; x &lt; chunkSize; x++) {
	for (int y = 0; y &lt; chunkSize; y++) {
		for (int z = -zBounds(); z &lt; zBounds(); z++) {
			TArray&lt;FVector&gt; verts;

			bool LT = getVoxel(x + 1 + ChunkX * chunkSize, y + ChunkY * chunkSize, z);
			bool RT = getVoxel(x + 1 + ChunkX * chunkSize, y + 1 + ChunkY * chunkSize, z);
			bool RB = getVoxel(x + ChunkX * chunkSize, y + 1 + ChunkY * chunkSize, z);
			bool LB = getVoxel(x + ChunkX * chunkSize, y + ChunkY * chunkSize, z);

			bool LT2 = getVoxel(x + 1 + ChunkX * chunkSize, y + ChunkY * chunkSize, z + 1);
			bool RT2 = getVoxel(x + 1 + ChunkX * chunkSize, y + 1 + ChunkY * chunkSize, z + 1);
			bool RB2 = getVoxel(x + ChunkX * chunkSize, y + 1 + ChunkY * chunkSize, z + 1);
			bool LB2 = getVoxel(x + ChunkX * chunkSize, y + ChunkY * chunkSize, z + 1);

			int t = 0;
			if (LT) t |= 1;
			if (RT) t |= 2;
			if (RB) t |= 4;
			if (LB) t |= 8;
			if (LT2) t |= 16;
			if (RT2) t |= 32;
			if (RB2) t |= 64;
			if (LB2) t |= 128;
			int num = LT + RT + RB + LB + LT2 + RT2 + RB2 + LB2;


			if (0 &lt; num && num &lt; 8) {
				float X = (x + ChunkX * chunkSize)* blockSize + blockSize / 2;
				float Y = (y + ChunkY * chunkSize)* blockSize + blockSize / 2;
				float Z = z * blockSize + blockSize / 2;
				float Xp = X + blockSize / 2;
				float Xm = X - blockSize / 2;
				float Yp = Y + blockSize / 2;
				float Ym = Y - blockSize / 2;
				float Zp = Z + blockSize / 2;
				float Zm = Z - blockSize / 2;
				FVector pos] = { { Xp,Y,Zm },{ X,Yp,Zm },{ Xm, Y, Zm },{ X,Ym,Zm },{ Xp,Y,Zp },{ X,Yp,Zp },{ Xm, Y, Zp },{ X,Ym,Zp },{ Xp,Ym,Z },{ Xp,Yp,Z },{ Xm,Yp,Z },{ Xm, Ym, Z } };

				verts = getVerts(triTable[t], pos);
				Tris_local.Append(getTris(verts, triTable[t], Verts_local.Num()));
				Verts_local.Append(verts);
				UVs_local.Append(getUVs(verts));
			}
		}
	}
}
CreateMeshSectionDefault(index, Verts_local, Tris_local, UVs_local);

}

void AChunkC::setValues(TArray<FVector> verts, TArray<int32> tris, TArray<FVector2D> uvs) {
if (canSetValues) {
Verts = verts;
Tris = tris;
UVs = uvs;
isReadyToRead = true;
}
}

float AChunkC::getZOffsetC(const int x, const int y)
{
return TerrainNoiseMountain(x, y) + TerrainNoiseNormal(x, y);
}

const int AChunkC::zBounds()
{
return 16;
}

double AChunkC::TerrainNoiseNormal(int x, int y)
{
double amp = 11;
double freq = 1.5;
double persistence = 2;
double freqMult = 1.75;
double t = 0;
for (int i = 0; i < 7; i++) {
t += Noise(x, y, amp, freq, true);
amp *= persistence;
freq *= freqMult;
}
return t;
}

double AChunkC::TerrainNoiseMountain(int x, int y)
{
double amp = 70;
double freq = 6;
double persistence = 2;
double freqMult = 2;
double t = 0;
for (int i = 0; i < 5; i++) {
t += amp * (sin(y / (freq / 2)) + sin(((1.73*x) - (y)) / freq) + sin((-y - (1.73 * x)) / freq));
amp *= persistence;
freq *= freqMult;
}
if (t > 0) return t;
return 0;
}

double AChunkC::Noise(int x, int y, double amplitude, double frequency, bool PRN)
{
double prn = 0;
if (PRN) {
prn = GetPRN(x, y);
}
return amplitude * (cos(((x / frequency) + prn)))*(sin(((y / frequency) + prn)));
}

double AChunkC::GetPRN(int x, int y)
{
return (cos((xx + 1 + y * 11) * 65535) + sin((yy - 23 + x * 7) * 255)) / 60.;
}

double AChunkC::GetPRN(int x, int y, int z) {
return (cos((xx + 1 + y * 11) * 65535 + z * 3) + sin((yy - 23 - z + (x + z) * 7) * 255) / 60.);
}

bool AChunkC::getRandomBool(int x, int y) {
double b = GetPRN(x, y) + GetPRN(y, x);
if (b >= .65 / 60.) return true;
return false;
}

bool AChunkC::getRandomBool(int x, int y, int z) {
double b = GetPRN(x, y, z) + GetPRN(y, z, x);
if (b >= .65 / 180) return true;
return false;
}

bool AChunkC::getRandomBoolWeight(int x, int y, float weight) {
int t = 0;
int resolution = 5;
for (int i = 0; i < resolution; i++) {
for (int j = 0; j < resolution; j++) {
if (getRandomBool(x + i, y - i)) t++;
}
}
if (t / (resolution * resolution) <= weight) return true;
return false;
}

bool AChunkC::getVoxel(int x, int y, int z) {
if (abs(z) > zBounds() - 1) return false;
float n = getZOffsetC(x, y);
if (n + blockSize < z * blockSize || z * blockSize > n - blockSize) return true;
return false;
}

TArray<FVector> AChunkC::getVerts(int x[16], FVector pos]) {
TArray<FVector> verts;
for (int i = 0; i < 16 && x* != -1; i++) {
verts.Add(pos[x*]);
}
return verts;
}

TArray<int32> AChunkC::getTris(TArray<FVector> verts, int x[16], int index) {
TArray<int32> tris;
for (int i = 0; i < 16 && x* != -1; i += 3) {
tris.Add(i + 2 + index);
tris.Add(i + 1 + index);
tris.Add(i + 0 + index);
}
return tris;
}

TArray<FVector2D> AChunkC::getUVs(TArray<FVector> verts)
{
TArray<FVector2D> uvs;
int length = verts.Num();
if (length == 0) return uvs;
if (length == 3) {
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
}
else if (length == 6) {
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
}
else if (length == 9) {
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
}
else if (length == 12) {
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
}
else if (length == 15) {
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
uvs.Add({ 0,0 });
uvs.Add({ 0,1 });
uvs.Add({ 1,0 });
}

return uvs;

}

ChunkC.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include “GameFramework/Actor.h”
#include “WorldStruct.h”
#include “ChunkStruct.h”
#include “AnimatedTerrain.h”
#include “RuntimeMeshLibrary.h”
#include “ChunkC.generated.h”

UCLASS()
class FUTUREGAME_API AChunkC : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor’s properties
AChunkC();

// Called when the game starts or when spawned
virtual void BeginPlay() override;

// Called every frame
virtual void Tick( float DeltaSeconds ) override;

UFUNCTION(BlueprintPure, Category = "Chunk")
static const int getRenderDistance();

UFUNCTION(BlueprintPure, Category = "Chunk")
void getPlayerPos(int &XX, int &YY);

int getPlayerX();
int getPlayerY();
void DestroyMesh(int x, int y);
void CreateMeshSectionGet();
int XPos;
int YPos;
TArray&lt;FVector&gt; Verts;
TArray&lt;int&gt; Tris;
TArray&lt;FVector&gt; Normals;
TArray&lt;FVector2D&gt; UVs;
TArray&lt;FColor&gt; VertexColors;
TArray&lt;FRuntimeMeshTangent&gt; Tangents;

void reset();

UFUNCTION()
void GetCubes(int ChunkX,int ChunkY, int index);

TArray&lt;FVector&gt; getVerts(int x], FVector pos]);
TArray&lt;int32&gt; getTris(TArray&lt;FVector&gt; verts, int x[16], int index);
TArray&lt;FVector2D&gt; getUVs(TArray&lt;FVector&gt; verts);
bool isReadyToRead;
bool timerActive;

static bool getVoxel(int x, int y, int z);
static float getZOffsetC(const int x, const int y);
static double TerrainNoiseNormal(int x, int y);
static double TerrainNoiseMountain(int x, int y);
static double Noise(int x, int y, double amplitude, double frequency, bool PRN);
static double GetPRN(int x, int y);
static double GetPRN(int x, int y, int z);

static bool getRandomBool(int x, int y);
static bool getRandomBool(int x, int y, int z);
static bool getRandomBoolWeight(int x, int y, float weight);

FWorldStruct world;

static const int chunkSize = 20;
static const int blockSize = 80;

UFUNCTION(BlueprintPure, Category = "Chunk")
static const int zBounds();

UPROPERTY(EditAnywhere, Category = "Chunk")
	URuntimeMeshComponent* mesh;

void setValues(TArray&lt;FVector&gt; verts, TArray&lt;int32&gt; tris, TArray&lt;FVector2D&gt; uvs);
void startTimer(int x, int y, int index);
void CreateMeshSectionDefault(int index, TArray&lt;FVector&gt; verts, TArray&lt;int&gt; tris, TArray&lt;FVector2D&gt; uvs);
void startGlobalTimer();
bool canSetValues = true;

TArray&lt;FTimerHandle&gt; timerHandles;

};

The issue spontaneously fixed itself when I deleted and replaced the actor…spent 2 hours trying to fix this…

The issue spontaneously fixed itself when I deleted and replaced the actor…spent 2 hours trying to fix this…
ima just leave this up incase anybody needs some help doing marching cubes algorithm, here’s the list of vertices

{ { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1 },
{ 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1 },
{ 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1 },
{ 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1 },
{ 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1 },
{ 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1 },
{ 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1 },
{ 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1 },
{ 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1 },
{ 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1 },
{ 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1 },
{ 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1 },
{ 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1 },
{ 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1 },
{ 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1 },
{ 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1 },
{ 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1 },
{ 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1 },
{ 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1 },
{ 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1 },
{ 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1 },
{ 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1 },
{ 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1 },
{ 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1 },
{ 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1 },
{ 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1 },
{ 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1 },
{ 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1 },
{ 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1 },
{ 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1 },
{ 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1 },
{ 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1 },
{ 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1 },
{ 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1 },
{ 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1 },
{ 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1 },
{ 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1 },
{ 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1 },
{ 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1 },
{ 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1 },
{ 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1 },
{ 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1 },
{ 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1 },
{ 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1 },
{ 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1 },
{ 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1 },
{ 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1 },
{ 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1 },
{ 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1 },
{ 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1 },
{ 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1 },
{ 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1 },
{ 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1 },
{ 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1 },
{ 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1 },
{ 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1 },
{ 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1 },
{ 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1 },
{ 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1 },
{ 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1 },
{ 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1 },
{ 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1 },
{ 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1 },
{ 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1 },
{ 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1 },
{ 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1 },
{ 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1 },
{ 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1 },
{ 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1 },
{ 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1 },
{ 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1 },
{ 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1 },
{ 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1 },
{ 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1 },
{ 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1 },
{ 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1 },
{ 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1 },
{ 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1 },
{ 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1 },
{ 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1 },
{ 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1 },
{ 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1 },
{ 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1 },
{ 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1 },
{ 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1 },
{ 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1 },
{ 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1 },
{ 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1 },
{ 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1 },
{ 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1 },
{ 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1 },
{ 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1 },
{ 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1 },
{ 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1 },
{ 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1 },
{ 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1 },
{ 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1 },
{ 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1 },
{ 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1 },
{ 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1 },
{ 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1 },
{ 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1 },
{ 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1 },
{ 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1 },
{ 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1 },
{ 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1 },
{ 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1 },
{ 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1 },
{ 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1 },
{ 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1 },
{ 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } };