a:6:{i:0;s:10962:"				<div class="h1"><h1>Rishikesh - Haridwar 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>Rishikesh - Haridwar 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">CTT / 42 Rishikesh A</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Haridwar, Rishikesh, Auli</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.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Rishikesh - Haridwar 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="27844"/>
						</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/56045.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_8/229281/56045.jpg"  width="150" height="150"    alt="haridwar darshan" title="haridwar darshan" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					1 Night Rishikesh - 2 Nights Auli - 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 / Rishikesh<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 - Rishikesh (230 kms - 6hour)
								</p>
								<p class="aj">Travel by surface from Delhi to Rishikesh.<br />
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. <br />
Arrive at Rishikesh , transfer to hotel, Check in to hotel and rest of the day at leisure.Later visit to sightseeing Laxman Jhula , Gita Bhavan,etc. overnight stay at hotel at Rishikesh.</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> Rishikesh - Auli (295kms - 7-8hrs)
								</p>
								<p class="aj">After breakfast ,check out from hotel, then drive to Auli.<br />
Auli : is the most popular skiing destination of Uttaranchal state. Auli is situated in Chamoli district of Garhwal region covering elevation from 2,519mts to 3,050mts above sea level. Auli is a "bugyal" which means meadow in the regional language. Auli is often compared with best ski resorts of the world y foreigners. Auli is going to host SAF winter games in the year 2010. Auli is blessed with invigorating views of the splendid mountain range, Himalayas. The slopes of Auli provide enough thrills to professional skier and novice as well. Arrive at Auli,transfer to hotel, check in to hotel.take rest, Rest of the day free at leisure, overnight stay at hotel at Auli.</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> Auli
								</p>
								<p class="aj">After breakfast, this day is at leisure to get mesmerized by the breath taking views of the western Himalayas. Overnight stay at hotel at Auli.</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> Auli - Haridwar (300kms - 8hrs.)
								</p>
								<p class="aj">After breakfast check out from hotel,then  drive to Haridwar.<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 asHardwar 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 />
Arrive at haridwar Transfer to hotel, check in to hotel, take rest ,free for leisure. Evening attend the Sunset Ganga Aarti at bank of river .Overnight stay at hotel, at 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 5:</b> Haridwar - Delhi (250kms - 5hrs)
								</p>
								<p class="aj">After breakfast, check out from hotel,then drive to Delhi for onward destination.<br />
<br />
Enroute visit Ashrams and temples- Mansa Devi and Chamunda Devi etc.</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 / Rishikesh</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 />
												</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="Rishikesh - Haridwar 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="27844"/>
						</form>
						</div>
						
						";i:1;s:64:"Book Rishikesh - Haridwar Tour - 4 Nights / 5 Days Tour Packages";i:2;s:135:"book rishikesh - haridwar tour - 4 nights / 5 days tour packages, lakes & rivers tour packages, haridwar, rishikesh, auli tour packages";i:3;s:180:"Chaturvedi Travels and Tours offers Rishikesh - Haridwar Tour - 4 Nights / 5 Days tour package, budget Lakes & Rivers tour packages for Haridwar, Rishikesh, Auli at exciting price.";i:4;s:1596:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Haridwar, Rishikesh, Auli"        
		                 },
		      "description": "1 Night Rishikesh - 2 Nights Auli - 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 / Rishikesh
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": "Rishikesh - Haridwar Tour",
		      "telephone": "+91-9826355115"
		    }
		    </script>
			";i:5;N;}