a:6:{i:0;s:11790:"				<div class="h1"><h1>Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.getsholidayindiatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.getsholidayindiatour.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Mussoorie</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="117877"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507555/191261.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507555/191261.jpg"  width="150" height="150"    alt="Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour" title="Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Rates per person on twin sharing in Indian Rupees based on base category room at all hotels. <br />
Transport using Indigo/Dezire for 02/03 pax; Innova for 04 Till 06 Pax only & instead of till 06 pax, rates shall be on request basis.<br />
Daily Breakfast & Dinner at respective Hotels/Resort included (Veg at religious destinations)<br />
Transport cost included with all toll tax, parking, interstate taxes, drivers allowance. <br />
Sightseeing as per the itineraries.<br />
Rates are valid Till March 2018.<br />
<br />
Note: The above mentioned rates are not valid during Christmas & New Year, Long Weekends, National holidays & festive period. All rates are subject to change without prior notice.GST @ 5% extra on total billing.<br />
Airfare/Transport is not on disposable basis.<br />
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.<br />
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. <br />
AC would not run on Hill drives.<br />
Entrance fees to the places of interest to visit.<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Delhi - Mussoorie (280 Kms)
								</p>
								<p class="aj">On arrival pick up from Delhi and proceed toward Mussoorie, travel by Surface. En route visit Dehradun. On arrival in Mussoorie check in hotel. Evening free to explore the town and walk at Mall road. Overnight at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> In Mussoorie
								</p>
								<p class="aj">Breakfast at hotel. Today half day Sightseeing to Kempty Fall, after enjoying the water fall of Kempty comes back to Mussoorie evening explores local Mussoorie (Gun Hill, Lal tibba, and Camel's back). Overnight at the hotel</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Mussoorie - Dhanaulti - Mussoorie (52 Kms round trip)
								</p>
								<p class="aj">After breakfast depart for a day excursion of Dhanaulti. which is 26 kms away from Mussoorie on Mussoorie - Chamba Road. Sightseeing of Dhanaulti. Dhanaulti is situated at an altitude of 2286 mts above sea level. Dhanaulti is the launching point for numerous treks into the snow - capped Himalayas. Evening back to Mussoorie. Overnight at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Mussoorie - Delhi (280 Kms)
								</p>
								<p class="aj">Morning after breakfast check out and drive toward Delhi, on arrival transfer to Airport / Railway station to catch your pre booked Flight / Train.<br />
Tour Conclude</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>GST @ 5% extra on total billing.</li><li>
Airfare/Transport is not on disposable basis.</li><li>
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.</li><li>
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. </li><li>
AC would not run on Hill drives.</li><li>
Entrance fees to the places of interest to visit.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Prices valid for minimum 02 - 06 people traveling together in one vehicle.</li>
	<li>Check-in / check-out time at all the properties would at 12:00 hrs (noon)</li>
	<li>Early check at all the properties would be subject to the availability at that time.</li>
	<li>All the above mentioned rates are per person rates on twin/double sharing basis.</li>
	<li>Child cost is on the basis of sharing room and bed with their parents.</li>
	<li>The above rates are applicable for resident Indian citizens only.</li>
</ul>

<p>&nbsp;<br />
<strong>BOOKING PROCEDURE:-</strong>

<ul>
	<li>All booking request for the packages has to be sent to us only by writing e-mail at: <a href="mailto:uttarakhand@utsindia.net">uttarakhand@utsindia.net</a> <a>/domestic@utsindia.net</a>.</li>
	<li>Details required for Confirmation:</li>
	<li>Please provide the following details along with your booking request:</li>
	<li>a. Clients or Group Name.</li>
	<li>b. Total No of people along with adult sharing the rooms and child with or without bed.</li>
	<li>c. Gender, Age, Valid photo id proof with address of all travelling passengers</li>
	<li>d. Date of Arrival and Departure with flight details (if travelling via air).</li>
	<li>Reference No: As soon as we receive a booking request a file no. will be sent to you, please note the same for future correspondence.</li>
	<li>Re-Confirmation: All bookings should to be reconfirmed with us minimum 30 - 15 days prior to the date off arrival along with confirmed arrival details, failure on which will be considered as cancellation.</li>
	<li>Service Voucher: The client has to carry an &quot;Exchange Service Voucher&quot; issued by the &ldquo;Discover Ladakh Adventure Tours &amp; Travel&rdquo; which will be provided to to the guest at the time of booking confirmation.</li>
</ul>

<p><strong>PAYMENTS:-</strong>

<ul>
	<li>On confirmation: 50% (advance ) to be deposited at the time of booking confirmation.</li>
	<li>Re-confirmation:&nbsp; 50 (2nd installment) should be deposited 30 - 15 days before tour starts.</li>
	<li>Payment Mode: Payments can be remitted through any of the following mode and is subject to realization:</li>
	<li>a. Demand Draft: In favor of &ldquo;Intense India Tours.&rdquo; payable at New Delhi</li>
	<li>b. At Par Cheque: Issue in the name of &ldquo;Intense India Tours.&rdquo; .</li>
	<li>c. Cash / Cheque Deposit in the following:</li>
</ul>

<p><strong>CANCELLTION POLICY:</strong>

<ul>
	<li>Cancellation request has to be sent to us by e-mail only.</li>
	<li>30 -15 Days prior to departure 25% of tour cost</li>
	<li>14 -07 Days prior to departure 50% of tour cost</li>
	<li>07- 03 Days prior to departure 75% of tour cost</li>
	<li>02 Days or No show - 100% of tour cost</li>
</ul>

<p><strong>Note: </strong>Cancelation policy is subject to amend as per policy of hotel booked for your stay in Uttarakhand.

<p><strong>REFUND:-</strong>

<ul>
	<li>Refund will be paid to the source through which the guest is booked. Any refund will take at least 15 days to process &amp; will be sent to you by a/c payee cheque only.</li>
	<li>NO REFUND WILL BE MADE AGAINST ANY UN UTILIZED SERVICES, WHAT SO EVER MAY BE THE REASON</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="117877"/>
						</form>
						</div>
						
						";i:1;s:100:"Book Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour - 3 Nights / 4 Days Tour Packages";i:2;s:158:"book delhi - mussoorie - dhanaulti - delhi 03 nights/ 04 days tour - 3 nights / 4 days tour packages, valley tour packages, new delhi, mussoorie tour packages";i:3;s:213:"Book Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour - 3 Nights / 4 Days tour packages from Gets Holiday India Tour - Get attractive 3 Nights / 4 Days Valley  tour packages for  New Delhi, Mussoorie.";i:4;s:1498:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Mussoorie"        
		                 },
		      "description": "Rates per person on twin sharing in Indian Rupees based on base category room at all hotels. 
Transport using Indigo/Dezire for 02/03 pax; Innova for 04 Till 06 Pax only & instead of till 06 pax, rates shall be on request basis.
Daily Breakfast & Dinner at respective Hotels/Resort included (Veg at religious destinations)
Transport cost included with all toll tax, parking, interstate taxes, drivers allowance. 
Sightseeing as per the itineraries.
Rates are valid Till March 2018.

Note: The above mentioned rates are not valid during Christmas & New Year, Long Weekends, National holidays & festive period. All rates are subject to change without prior notice.GST @ 5% extra on total billing.
Airfare/Transport is not on disposable basis.
Jeep Safari, Boat rides, Pony rides, Cable Car rides, Train Fares, Air Fares, Personal expenses are not included.
Meals except including in the costs, Boating, Ropeway etc during sightseeing are not included. 
AC would not run on Hill drives.
Entrance fees to the places of interest to visit.",
		      "name": "Delhi - Mussoorie - Dhanaulti - Delhi 03 Nights/ 04 Days Tour",
		      "telephone": "+91-8532003202"
		    }
		    </script>
			";i:5;N;}