a:6:{i:0;s:17427:"				<div class="h1"><h1>Mussoorie - Haridwar 3Night/4Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.chaturveditravels.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Mussoorie - Haridwar 3Night/4Days 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">Tour Code </td>
						<td class="p5px pl0px vat">CTT31/Mussoorie-hari</td>
						</tr>
												<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">Mussoorie, Haridwar</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 13999 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mussoorie - Haridwar 3Night/4Days 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="27833"/>
						</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_8/229281/56055.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_8/229281/56055.jpg"  width="150" height="150"    alt="fantabulous mussoorie" title="fantabulous mussoorie" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					2 Nights Mussoorie - 1 Night HaridwarAny Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.<br />
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.<br />
Major Meals I.E. Lunch & Dinner At Haridwar <br />
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings<br />
Any Medical /Rescue Evacuation Due To Mishaps. <br />
Optional Activities Mentioned In The Itinerary <br />
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:<br />
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. <br />
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. <br />
Government Service Tax @ 3.09 Extra <br />
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.<br />
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.<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 (280kms - 6 - 7hrs)
								</p>
								<p class="aj">Travel By surface from Delhi to Mussoorie.<br />
<br />
Mussoorie: is a wonderful hill station in Uttaranchal. It is situated at the foothills of the Himalayas and is known as the Queen of the Hills. Mussoorie derives its name from the plants of Mussoorie or shrubmansoor which are available in large quantities in this region. The lush green hills, the varied flora and fauna and the majestic view of the Shivalik ranges and the Doon Valley attracts hundreds of tourists both domestic and international to Mussoorie each year. Mussoorie is famous not only for its scenic beauty but it has also developed into an important center of education and business. Mussoorie is also famous for the Lal Bahadur Shastri National Academy of Administration where officers are trained for the Indian Administrative Service and the Indian Police Service. Arrive at Mussoorie transfer to hotel,check in to hotel, rest of the day free at Leisure. overnight stay at hotel at Mussoorie.</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> Mussoorie
								</p>
								<p class="aj">After breakfast, visit to Kempty fall, kempty fall, municipal garden,Gun hill, Company Garden, Mall road etc. <br />
Lal Tibba : This is regarded as the highest point in Mussoorie situated in area called Landour Which is know to be the oldest inhabited place of Mussoorie.<br />
<br />
Gun Hill : Gun hiil is the second highest point in Mussoorie.it is also known as picnic spot for the locals.From this points,Mussoorie appears to be changing colors in every minute.It looks amazing from here.<br />
<br />
Municipal Garden : This is also known as Botanical Gardens of Mussoorie were established by geologist Dr. H.Fackner in the last century.<br />
<br />
Kempty Fall : Kempty fall is just 12 kms down from Mussoorie.<br />
<br />
Mussoorie - Dehradun midway ,the beautifull falls were declared as a tourist destination by John Mekinan after after 1835.The name Kempty is derived from 'Camp - tea', as the Britishers would organise their tea parties here. Past Kempty Fall, 12 - km downhill.</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 - Rishikesh - Haridwar (80 kms 2hrs)
								</p>
								<p class="aj">After breakfast check out from hotel, then drive to Haridwar.<br />
<br />
Haridwar : Meaning ‘Gateway to God’ is one of the seven holiest places of the Hindus, located on the banks of River Ganges. It is the place where river Ganga descends to the plains. Haridwar is also spelled as Hardwar or Hari - Dwar. Haridwar is also one of the four places where drops of Amrit or nectar fell from the pitcher which was being carried by Garuda, the heavenly bird and the spot is known as Brahma Kund or Har - ki - Pauri.<br />
<br />
Enroute visit Rishikesh: was named after the God Hrishikesh whose appearance is an answer to the lord penances by Rabhiya Rishi. The Holy Chardham yatra has its starting point from Rishikesh. Rishikesh is a famous Hindu religious destinations, popular amongst devotees, yoga persons and adventurers as well. Located on the banks of the sacred Ganga River, Rishikesh attracts thousands of pilgrims every day from India as well as abroad. covering Lakshman Jhula ,Gita Bhavan, Neelkanth Mahadev temple etc.<br />
<br />
Arrive Haridwar transfer to hotel, check in to hotel. Later witness Aarti of the Holy River Ganges. overnight stay at hotel in Haridwar.</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> Haridwar - Delhi(250kms - 5hrs)
								</p>
								<p class="aj">After breakfast check out from hotel, then drive to Delhi enroute covering sightseeing Ashrams and temples - Mansa Devi and Chamunda Devi, har ki pouri etc.<br />
<br />
Arrive Delhi and transfer to airport/railway station for onward destination.</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>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.</li><li>
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.</li><li>
Major Meals I.E. Lunch & Dinner At Haridwar </li><li>
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings</li><li>
Any Medical /Rescue Evacuation Due To Mishaps. </li><li>
Optional Activities Mentioned In The Itinerary </li><li>
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:</li><li>
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. </li><li>
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. </li><li>
Government Service Tax @ 3.09 Extra </li><li>
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.</li><li>
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Per person rates (Rs) - Applicable on&nbsp;2 /&nbsp;3 persons staying together sharing the same room</li>
	<li>Package rates are subject to change without prior notice<br />
	Meal plan: EP- accommodation only, CP-accommodation with breakfast, MAP- accommodation with breakfast, lunch or dinner, AP-accommodation with breakfast, lunch &amp; dinner</li>
	<li>The packages can not be combined with any other offer.<br />
	The above package is not valid during national holidays, festivals &amp; long weekends Chaturvedi Travels and Tours. Reserves the right to change/modify or terminate the offer any time at its own discretion and without any prior notice Package does not includes</li>
	<li>Meals not mentioned in the itinerary. Package does not include entry fees to monuments and places anything not mentioned in the package includes. Porte rage at hotels and airports, tips, insurance, laundry, liquors, wine, mineral water, telephone charges all items of personal nature.</li>
	<li>Any cost arising due to natural calamities like landslides, roadblocks, etc. (to be borne by the clients directly on the spot).</li>
	<li>Any increase in taxes or fuel leading to an increase in surface transportation &amp; land arrangements, which may come into effect prior to departure.</li>
	<li>Rates are subject to change &amp; Rooms are subject to availability. Peak season / Holiday surcharge will be applicable in case if there are any events. No reservation has been made till date. This is just a quotation. Final costing will be given at the time of confirmation. The above rate is valid only for mentioned dates. The above is only an offer and not confirmation of your bookings.</li>
	<li>We shall proceed with your booking once we have receive the payment from you &amp; if we are not able to get the original hotels, shall provide equivalent/ alternative hotels. You are requested to make advance payment (50 % of the total tour cost) by credit card along with 2 % bank charges OR bank transfer to initiate with the bookings.</li>
	<li>Balance payment can be made 15 days prior to your tour starting date. On receipt of full payment we will send you the travel vouchers.</li>
	<li>PLEASE NOTE STANDARD CHECK IN TIME IS 1400 HRS &amp; CHECK OUT TIME IS 0900 HRS. PLEASE RECONFIRM THE ABOE PACKAGE WITH PAYMENT DETAILS AT THE EARLIEST. KINDLY DEPOSIT THE PACKAGE COST IN OUR ACCOUNT AT THE EARLIEST. PLEASE FIND OUR ACCOUNT DETAILS GIVEN BELOW CUSTOMER&#39;S OPTION TO MAKE PAYMENTS THROUGH DEBIT CLEARING Particulars Details.</li>
	<li>IN KEEPING WITH OUR HEIGHTENED SECURITY PROCEDURES WE REQUEST YOU TO CARRY A PHOTO-IDENTITY TO PRESENT AT CHECH-IN. FOREIGN NATIONALS WILL REQUIRETO PRESENT THE PASSPORT AND VALID VISA WHILE INDIAN NATIONALS CAN PRESENT ANY ONE OF THESE: PASSPORT, DRIVING LICENSE, VOTER ID CARD or PAN CARD. Our rates are based on the prevailing rates as negotiated by us with the hotels.</li>
	<li>Hotels retain the right to modify the rates without notice. In case of such changes the rates quoted before the modification, can be changed by us according to the modifications by hotels. All hotel bookings are based on usual check in and check out time of the hotels until unless indicated in the itinerary We shall not be responsible for any delays &amp; alterations in the program or expenses incurred - directly or indirectly - due to natural hazards, flight cancellations, accident, breakdown of machinery or equipments, breakdown of transport, weather, sickness, landslides, political closures or any untoward incidents.</li>
	<li>We shall not be responsible for any loss, injury or damage to person, property, or otherwise in connection with any accommodation, transportation or other services, resulting - directly or indirectly - from any act of GOD, dangers, fire, accident, breakdown in machinery or equipment, breakdown of transport, wars, civil disturbances, strikes, riots, thefts, pilferages, epidemics, medical or custom department regulations, defaults, or any other causes beyond our control.</li>
</ul>

<p><strong>Reservation Policy:</strong>

<ul>
	<li>Confirmation of Hotel Rooms / House boat is subject to the availability.</li>
	<li>Confirmation of the Packages is subject to receipt of 100% payment i.e., 70 % of the payment as advance at time of booking &amp; balance 30 % before 15 days of departure.</li>
</ul>

<p><strong>Cancellation Policy:</strong>

<ul>
	<li>Cancellation of the tour packages IS NON REFUNDABLE / Hotel Booking / Transportation or Non Utilization of the same: 100 % Retention.</li>
</ul>

<p><strong>Terms &amp; Conditions:</strong>

<p>The above itinerary is suggested Tour Plan. The Company is responsible for only those services which are charged from the guest. All other services which are not paid by the guest to the Company are Suggested services and Company is nowhere bound to provide that service or pay the cost for the same.

<ul>
	<li>Check in and Check out Timing of the Hotel will be according to the timing of the respective Hotels.</li>
	<li>Company is not responsible for compensating any loss or additional cost incurred by the guest while taking the tour.</li>
	<li>Company is not responsible, nor liable for any damage, loss or injury caused to any passenger while taking the tour.</li>
	<li>Dollar rates are applicable only to foreign nationals &amp; Indians possessing foreign passports, while the INR package rates will be applicable to Indian nationals.</li>
	<li>All the disputes are subject to Gwalior Jurisdiction only.</li>
	<li>Any Claim related to the Package must be brought to the notice of the Company within a week.</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mussoorie - Haridwar 3Night/4Days 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="27833"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Mussoorie - Haridwar 3Night/4Days Tour - 3 Nights / 4 Days Tour Packages";i:2;s:142:"book mussoorie - haridwar 3night/4days tour - 3 nights / 4 days tour packages, lakes & rivers tour packages, mussoorie, haridwar tour packages";i:3;s:187:"Chaturvedi Travels and Tours offers Mussoorie - Haridwar 3Night/4Days Tour - 3 Nights / 4 Days tour package, budget Lakes & Rivers tour packages for Mussoorie, Haridwar at exciting price.";i:4;s:1577:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Mussoorie, Haridwar"        
		                 },
		      "description": "2 Nights Mussoorie - 1 Night HaridwarAny Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.
Major Meals I.E. Lunch & Dinner At Haridwar 
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings
Any Medical /Rescue Evacuation Due To Mishaps. 
Optional Activities Mentioned In The Itinerary 
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. 
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. 
Government Service Tax @ 3.09 Extra 
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.",
		      "name": "Mussoorie - Haridwar 3Night/4Days Tour",
		      "telephone": "+91-9826355115"
		    }
		    </script>
			";i:5;N;}