using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AthleteProgramming2
{
    class Point
    {
        public int x;
        public int y;
        public Point(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
        static public Point operator+(Point p1,Point p2)
        {
            return new Point(p1.x + p2.x, p1.y + p2.y);
        }
        static public  bool IsWithinRange(Point p)
        {
            if (p.x < 0||p.y<0||p.x>9||p.y>9)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int[,] map = new int[10, 10];
            string str;
            while ((str = Console.ReadLine()) != null)
            {
                int[] xys = str.Split(',').Select(int.Parse).ToArray();
                Point fallenPoint = new Point(xys[0], xys[1]);
                int s = xys[2];
                if (s == 1)
                {
                    SmallInk(fallenPoint,ref map);
                }else if (s == 2)
                {
                    MiddleInk(fallenPoint,ref map);
                }else if (s == 3)
                {
                    LargeInk(fallenPoint,ref map);
                }
            }
            int count = 0;
            int maxDensity = 0;
            for(int i = 0; i < 10; i++)
            {
                for(int j = 0; j < 10; j++)
                {
                    if (map[i, j] == 0)
                    {
                        count++;
                    }
                    if (map[i, j] > maxDensity)
                    {
                        maxDensity = map[i, j];
                    }
                }
            }

            Console.WriteLine(count);
            Console.WriteLine(maxDensity);
        }


        static void SmallInk(Point fallenPoint,ref int[,] map)
        {
            Point[] points = new Point[]
            {
                new Point(0,0),new Point(0,-1),new Point(1,0),new Point(0,1),new Point(-1,0)
            };
            for(int i = 0; i < points.Length; i++)
            {
                Point point = fallenPoint + points[i];
                if (Point.IsWithinRange(point) == true)
                {
                    map[point.x, point.y] += 1;
                }
            }

        }
        static void MiddleInk(Point fallenPoint, ref int[,] map)
        {
            Point[] points = new Point[]
            {
                 new Point(0,0),new Point(0,-1),new Point(1,0),new Point(0,1),new Point(-1,0),new Point(-1,-1),new Point(1,-1),new Point(1,1),new Point(-1,1)
            };
            for (int i = 0; i < points.Length; i++)
            {
                Point point = fallenPoint + points[i];
                if (Point.IsWithinRange(point) == true)
                {
                    map[point.x, point.y] += 1;
                }
            }
        }
        static void LargeInk(Point fallenPoint,ref int[,] map)
        {
            Point[] points = new Point[]
            {
                   new Point(0,0),new Point(0,-1),new Point(1,0),new Point(0,1),new Point(-1,0),new Point(-1,-1),new Point(1,-1),new Point(1,1),new Point(-1,1),new Point(-2,0),new Point(0,-2),new Point(2,0),new Point(0,2)
            };
            for(int i = 0; i < points.Length; i++)
            {
                Point point = fallenPoint + points[i];
                if (Point.IsWithinRange(point)==true)
                {
                    map[point.x, point.y] += 1;
                }
            }
        }
        

    }
}

Measured memory_bytes: 9400