#include<iostream>
int data[8][4]={0};
int b[3][3]={1,1,0,
	         1,0,1,
			 0,1,1};
int sp[17]={0};
int n,m;   //n是拍卖品 m是人数
int max=0;
void dfs(int step,int mon)
{   
	if(step==m)
	{
		if(mon>max)
		{
		   max=mon;
		}
		return;
	}
	for(int i=0;i<3;i++)   //0不拍 1拍两个 2 拍三个
	{
		if(i==0)
		{
			dfs(step+1,mon);
		}
		if(i==1)
		{
			for(int j=0;j<3;j++)
			{
				if(j==0)
				{
					if(sp[data[step][0]]==0&&sp[data[step][1]]==0)
					{
						sp[data[step][0]]=1;
						sp[data[step][1]]=1;
						dfs(step+1,mon+data[step][3]*2);
                        sp[data[step][0]]=0;
						sp[data[step][1]]=0;

					}
				}
				if(j==1)
				{
					if(sp[data[step][1]]==0&&sp[data[step][2]]==0)
					{
						sp[data[step][1]]=1;
						sp[data[step][2]]=1;
						dfs(step+1,mon+data[step][3]*2);
                        sp[data[step][1]]=0;
						sp[data[step][2]]=0;

					}
				}
				if(j==2)
				{
					if(sp[data[step][0]]==0&&sp[data[step][2]]==0)
					{
						sp[data[step][0]]=1;
						sp[data[step][2]]=1;
						dfs(step+1,mon+data[step][3]*2);
                        sp[data[step][0]]=0;
						sp[data[step][2]]=0;

				     }

			}
		}
		}
		if(i==2)
		{
			if(sp[data[step][0]]==0&&sp[data[step][1]]==0&&sp[data[step][2]]==0)
			{
				sp[data[step][0]]=1;
				sp[data[step][1]]=1;
				sp[data[step][2]]=1;
				dfs(step+1,mon+data[step][3]*3);
				sp[data[step][0]]=0;
				sp[data[step][1]]=0;
				sp[data[step][2]]=0;

			}

		}
	}

}

int main()
{  
	freopen("input.txt","r",stdin);
	scanf("%d%d",&n,&m); //m 人数
	for(int i=0;i<m;i++)
	{ 
		for(int j=0;j<4;j++)
		{
		scanf("%d",&data[i][j]);
		}

	}
	for(int i=0;i<m;i++)
	{ 
		for(int j=0;j<4;j++)
		{
		printf("%d ",data[i][j]);
		}

		printf("\n");
	}

	dfs(0,0);
	printf("%d",max);


}