Language: C++

import java.io.*;
import java.util.*;
import java.lang.ArrayIndexOutOfBoundsException;
import java.math.*;


class Main {
	static Scanner sc = new Scanner(new InputStreamReader(System.in));
	public static void main(String[] args) throws Exception {
		try{
			while(true) {
				int r = sc.nextInt();
				int n = sc.nextInt();
				if(r+n == 0) continue;
				System.out.printf("%.4f\n", solve(r, n));
			}
		}catch(Exception e){
			System.out.println(e);
		}
	}


	static double solve(int r, int n) throws Exception {
		int[] dp = new int[39];
		HashMap<int[], Integer> map = new HashMap<int[], Integer>();
		for (int i = 0; i < n; i++) {
			int xl = sc.nextInt();
			int xr = sc.nextInt();
			int h = sc.nextInt();
			for(int j = xl; j < xr; j++) {
				int index = j + 20;
				dp[index] = Math.max(dp[index], h);
			}
		}
		// System.out.println(Arrays.toString(dp));

		for(double ans = -r; ans < 20.0; ans += 0.001) {
			for (int i = 1-r; i < r; i++) {
				int index = i + 20;
				int h = Math.min(dp[index-1], dp[index]);
				// System.out.println(index + " "+ h);
				double dist = sqdist(0.0, ans, (double)i, (double)h);
				if(dist < (double)(r*r)) {
					return ans + (double)r;
				}
			}
		}
		return 0.0;
	}
	public static int sq(int i) {
		return i * i;
	}

	public static double sq(double d) {
		return d * d;
	}
	// square を snippet から実装してください
	public static int sqdist(int x1, int y1, int x2, int y2) {
		return sq(x1 - x2) + sq(y1 - y2);
	}

	public static double sqdist(double x1, double y1, double x2, double y2) {
		return sq(x1 - x2) + sq(y1 - y2);
	}

	public static double dist(int x1, int y1, int x2, int y2) {
		return Math.sqrt(sqdist(x1, y1, x2, y2));
	}

	public static double dist(double x1, double y1, double x2, double y2) {
		return Math.sqrt(sqdist(x1, y1, x2, y2));
	}
}



/**
 * 複素数
 */
class Complex {
	static Complex I = new Complex(0, 1);

	double r = 0.0;
	double i = 0.0;
	Complex(double r, double i) {
		this.r = r;
		this.i = i;
	}

	/**
	 * 和
	 */
	public Complex add(Complex a) {
		return new Complex(r * a.r, i + a.i);
	}

	/**
	 * 積
	 */
	public Complex mul(Complex a) {
		return new Complex(
				r * a.r - i * a.i,
				r * a.i + i * a.r);
	}

	public Complex divide(double a) {
		return new Complex(r/a, i/a);
	}

	public Complex inverse() {
		double b = 1 / (r*r + i*i);
		return new Complex(r/b, -i/b);
	}


	@Override
	public String toString(){
		return r + "+" + i + "i";
	}
}




// --- ここから下はライブラリ ----------
/**
 * MyUtil
 * @author yoshikyoto
 */
class MyIO {
	public static int toInt(boolean[] a){
		int pow = 1, ret = 0, l = a.length;
		for(int i = 0; i < l; i++){
			if(a[i]) ret += pow;
			pow *= 2;
		}
		return ret;
	}
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	public static int ins[];
	public static int[] readIntMap() throws IOException{return parseInt(readLine().split(" "));}
	public static int readIntMap(int i) throws Exception{
		if(i == 0) ins = readIntMap();
		return ins[i];
	}
	public static int[][] readIntMap(int n, int m) throws IOException{
		int[][] ret = new int[n][];
		for(int i = 0; i < n; i++) ret[i] = readIntMap();
		return ret;
	}
	public static int[] readIntToMap(int n) throws IOException{
		int[] ret = new int[n];
		for(int i = 0; i < n; i++) ret[i] = readInt();
		return ret;
	}
	public static int[] readNoDistIntMap() throws IOException{
		String[] strs = readLine().split("");
		int l = strs.length;
		int[] ret = new int[l-1];
		for(int i = 1; i < l; i++)
			ret[i-1] = parseInt(strs[i]);
		return ret;
	}
	public static String readLine() throws IOException{return br.readLine();}
	public static int readInt() throws IOException{return Integer.parseInt(br.readLine());}
	public static int[] parseInt(String[] arr){
		int[] res = new int[arr.length];
		for(int i = 0; i < arr.length; i++)res[i] = Integer.parseInt(arr[i]);
		return res;
	}
	public static double[] parseDouble(String[] arr){
		double[] res = new double[arr.length];
		for(int i = 0; i < arr.length; i++)res[i] = Double.parseDouble(arr[i]);
		return res;
	}
	public static boolean[] parseBool(String[] arr){
		int[] t = parseInt(arr);
		boolean[] res = new boolean[t.length];
		for(int i = 0; i < t.length; i++){
			if(t[i] == 1){res[i] = true;
			}else{res[i] = false;}
		}
		return res;
	}
	public static int parseInt(Object o){
		return Integer.parseInt(o.toString());
	}
}

Compiler output:
a.cc:116:9: error: stray '@' in program
  116 |         @Override
      |         ^
a.cc:1:1: error: 'import' does not name a type
    1 | import java.io.*;
      | ^~~~~~
a.cc:1:1: note: C++20 'import' only available with '-fmodules-ts'
a.cc:2:1: error: 'import' does not name a type
    2 | import java.util.*;
      | ^~~~~~
a.cc:2:1: note: C++20 'import' only available with '-fmodules-ts'
a.cc:3:1: error: 'import' does not name a type
    3 | import java.lang.ArrayIndexOutOfBoundsException;
      | ^~~~~~
a.cc:3:1: note: C++20 'import' only available with '-fmodules-ts'
a.cc:4:1: error: 'import' does not name a type
    4 | import java.math.*;
      | ^~~~~~
a.cc:4:1: note: C++20 'import' only available with '-fmodules-ts'
a.cc:8:16: error: 'Scanner' does not name a type
    8 |         static Scanner sc = new Scanner(new InputStreamReader(System.in));
      |                ^~~~~~~
a.cc:9:15: error: expected ':' before 'static'
    9 |         public static void main(String[] args) throws Exception {
      |               ^~~~~~~
      |               :
a.cc:9:33: error: 'String' has not been declared
    9 |         public static void main(String[] args) throws Exception {
      |                                 ^~~~~~
a.cc:9:42: error: expected ',' or '...' before 'args'
    9 |         public static void main(String[] args) throws Exception {
      |                                          ^~~~
a.cc:9:46: error: expected ';' at end of member declaration
    9 |         public static void main(String[] args) throws Exception {
      |                                              ^
      |                                               ;
a.cc:9:48: error: 'throws' does not name a type
    9 |         public static void main(String[] args) throws Exception {
      |                                                ^~~~~~
a.cc:23:41: error: expected ';' at end of member declaration
   23 |         static double solve(int r, int n) throws Exception {
      |                                         ^
      |                                          ;
a.cc:23:43: error: 'throws' does not name a type
   23 |         static double solve(int r, int n) throws Exception {
      |                                           ^~~~~~
a.cc:50:15: error: expected ':' before 'static'
   50 |         public static int sq(int i) {
      |               ^~~~~~~
      |               :
a.cc:54:15: error: expected ':' before 'static'
   54 |         public static double sq(double d) {
      |               ^~~~~~~
      |               :
a.cc:58:15: error: expected ':' before 'static'
   58 |         public static int sqdist(int x1, int y1, int x2, int y2) {
      |               ^~~~~~~
      |               :
a.cc:62:15: error: expected ':' before 'static'
   62 |         public static double sqdist(double x1, double y1, double x2, double y2) {
      |               ^~~~~~~
      |               :
a.cc:66:15: error: expected ':' before 'static'
   66 |         public static double dist(int x1, int y1, int x2, int y2) {
      |               ^~~~~~~
      |               :
a.cc:70:15: error: expected ':' before 'static'
   70 |         public static double dist(double x1, double y1, double x2, double y2) {
      |               ^~~~~~~
      |               :
a.cc:73:2: error: expected ';' after class definition
   73 | }
      |  ^
      |  ;
a.cc: In static member function 'static double Main::dist(int, int, int, int)':
a.cc:67:24: error: 'Math' was not declared in this scope
   67 |                 return Math.sqrt(sqdist(x1, y1, x2, y2));
      |                        ^~~~
a.cc: In static member function 'static double Main::dist(double, double, double, double)':
a.cc:71:24: error: 'Math' was not declared in this scope
   71 |                 return Math.sqrt(sqdist(x1, y1, x2, y2));
      |                        ^~~~
a.cc: At global scope:
a.cc:81:44: error: invalid use of incomplete type 'class Complex'
   81 |         static Complex I = new Complex(0, 1);
      |                                            ^
a.cc:80:7: note: definition of 'class Complex' is not complete until the closing brace
   80 | class Complex {
      |       ^~~~~~~
a.cc:81:24: error: in-class initialization of static data member 'Complex Complex::I' of incomplete type
   81 |         static Complex I = new Complex(0, 1);
      |                        ^
a.cc:81:24: error: 'Complex Complex::I' has incomplete type
a.cc:93:15: error: expected ':' before 'Complex'
   93 |         public Complex add(Complex a) {
      |               ^~~~~~~~
      |               :
a.cc:100:15: error: expected ':' before 'Complex'
  100 |         public Complex mul(Complex a) {
      |               ^~~~~~~~
      |               :
a.cc:106:15: error: expected ':' before 'Complex'
  106 |         public Complex divide(double a) {
      |               ^~~~~~~~
      |               :
a.cc:110:15: error: expected ':' before 'Complex'
  110 |         public Complex inverse() {
      |               ^~~~~~~~
      |               :
a.cc:116:10: error: 'Override' does not name a type
  116 |         @Override
      |          ^~~~~~~~
a.cc:120:2: error: expected ';' after class definition
  120 | }
      |  ^
      |  ;
a.cc: In constructor 'Complex::Complex(double, double)':
a.cc:86:22: error: request for member 'r' in '(Complex*)this', which is of pointer type 'Complex*' (maybe you meant to use '->' ?)
   86 |                 this.r = r;
      |                      ^
a.cc:87:22: error: request for member 'i' in '(Complex*)this', which is of pointer type 'Complex*' (maybe you meant to use '->' ?)
   87 |                 this.i = i;
      |                      ^
a.cc: In member function 'Complex Complex::add(Complex)':
a.cc:94:52: error: could not convert '(operator new(16), ((true, (((Complex*)<anonymous>)->Complex::Complex((((Complex*)this)->Complex::r * a.Complex::r), (((Complex*)this)->Complex::i + a.Complex::i)), (<anonymous> = false))), ((Complex*)<anonymous>)))' from 'Complex*' to 'Complex'
   94 |                 return new Complex(r * a.r, i + a.i);
      |                                                    ^
      |                                                    |
      |                                                    Complex*
a.cc: In member function 'Complex Complex::mul(Complex)':
a.cc:103:50: error: could not convert '(operator new(16), ((true, (((Complex*)<anonymous>)->Complex::Complex(((((Complex*)this)->Complex::r * a.Complex::r) - (((Complex*)this)->Complex::i * a.Complex::i)), ((((Complex*)this)->Complex::r * a.Complex::i) + (((Complex*)this)->Complex::i * a.Complex::r))), (<anonymous> = false))), ((Complex*)<anonymous>)))' from 'Complex*' to 'Complex'
  103 |                                 r * a.i + i * a.r);
      |                                                  ^
      |                                                  |
      |                                                  Complex*
a.cc: In member function 'Complex Complex::divide(double)':
a.cc:107:44: error: could not convert '(operator new(16), ((true, (((Complex*)<anonymous>)->Complex::Complex((((Complex*)this)->Complex::r / a), (((Complex*)this)->Complex::i / a)), (<anonymous> = false))), ((Complex*)<anonymous>)))' from 'Complex*' to 'Complex'
  107 |                 return new Complex(r/a, i/a);
      |                                            ^
      |                                            |
      |                                            Complex*
a.cc: In member function 'Complex Complex::inverse()':
a.cc:112:45: error: could not convert '(operator new(16), ((true, (((Complex*)<anonymous>)->Complex::Complex((((Complex*)this)->Complex::r / b), ((-((Complex*)this)->Complex::i) / b)), (<anonymous> = false))), ((Complex*)<anonymous>)))' from 'Complex*' to 'Complex'
  112 |                 return new Complex(r/b, -i/b);
      |                                             ^
      |                                             |
      |                                             Complex*
a.cc: At global scope:
a.cc:131:15: error: expected ':' before 'static'
  131 |         public static int toInt(boolean[] a){
      |               ^~~~~~~
      |               :
a.cc:131:33: error: 'boolean' has not been declared
  131 |         public static int toInt(boolean[] a){
      |                                 ^~~~~~~
a.cc:131:43: error: expected ',' or '...' before 'a'
  131 |         public static int toInt(boolean[] a){
      |                                           ^
a.cc:139:16: error: 'BufferedReader' does not name a type
  139 |         static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      |                ^~~~~~~~~~~~~~
a.cc:140:15: error: expected ':' before 'static'
  140 |         public static int ins[];
      |               ^~~~~~~
      |               :
a.cc:141:15: error: expected ':' before 'static'
  141 |         public static int[] readIntMap() throws IOException{return parseInt(readLine().split(" "));}
      |               ^~~~~~~
      |               :
a.cc:141:26: error: expected unqualified-id before '[' token
  141 |         public static int[] readIntMap() throws IOException{return parseInt(readLine().split(" "));}
      |                          ^
a.cc:142:15: error: expected ':' before 'static'
  142 |         public static int readIntMap(int i) throws Exception{
      |               ^~~~~~~
      |               :
a.cc:142:43: error: expected ';' at end of member declaration
  142 |         public static int readIntMap(int i) throws Exception{
      |                                           ^
      |                                            ;
a.cc:142:45: error: 'throws' does not name a type
  142 |         public static int readIntMap(int i) throws Exception{
      |                                             ^~~~~~
a.cc:146:15: error: expected ':' before 'static'
  146 |         public static int[][] readIntMap(int n, int m) throws IOException{
      |               ^~~~~~~
      |               :
a.cc:146:26: error: expected unqualified-id before '[' token
  146 |         public static int[][] readIntMap(int n, int m) throws IOException