using System;
using System.Threading;
class ReaderWriter{
    private static object _lock = new object();
    private static int _data = 0;
    public static void Reader()
    {
        while (true)
        {
            lock (_lock)
            {
                Console.WriteLine("Reader " + Thread.CurrentThread.Name + " reads " + _data);
                Thread.Sleep(1000);
            }
        }
    }
    public static void Writer()
    {
        while (true)
        {
            lock (_lock)
            {
                _data++;
                Console.WriteLine("Writer " + Thread.CurrentThread.Name + " writes " + _data);
                Thread.Sleep(1000);
            }
        }
    }
}
class Program{
    static void Main()
    {
        Thread reader1 = new Thread(ReaderWriter.Reader);
        reader1.Name = "1";
        Thread reader2 = new Thread(ReaderWriter.Reader);
        reader2.Name = "2";
        Thread writer1 = new Thread(ReaderWriter.Writer);
        writer1.Name = "1";
        Thread writer2 = new Thread(ReaderWriter.Writer);
        writer2.Name = "2";
        reader1.Start();
        reader2.Start();
        writer1.Start();
        writer2.Start();
    }
}